0

我是一个新手 python 程序员,我被困在一个家庭作业问题上。

我想在**dict不使用该update()方法的情况下组合字典(尝试使用),因为我想保留任何重复的键。我可以拥有一些具有多个值的键。

有人能指出我正确的方向吗?

另外,我在 python 3.3 中这样做

4

2 回答 2

0

dict 将键映射到值。不是多个值。因此,您需要使组合字典中的每个值都是输入字典中所有值的组合。最简单的方法是使用collections.defaultdict(list)

import collections

input_dicts = [{1: 0}, {1: 1}, {1: 2}]

output_dict = collections.defaultdict(list)
for d in input_dicts:
    for key in d:
        output_dict[key].append(d[key])

Acollections.defaultdict调用您指定的函数来为您尝试访问但还没有值的任何键生成默认值。因此, Acollections.defaultdict(list)是一个具有所有键列表默认值的字典。此代码将生成一个输出 dict 映射键到来自输入 dicts 的所有值的列表。

于 2013-09-19T04:51:20.533 回答
0

字典中不能有重复的键。密钥必须是唯一的,但我认为您正在寻找的是defaultdict

from collections import defaultdict
d = defaultdict(list)
d1 = {1:'hi', 2:'hey', 3:'hai'}
d2 = {1:'hello', 2:'cabbage', 3:'greetings'}
for k, v in d1.items():
    d[k].append(v)

for k1, v1 in d2.items():
    d[k1].append(v1)

print d

印刷:

defaultdict(<type 'list'>, {1: ['hi', 'hello'], 2: ['hey', 'cabbage'], 3: ['hai', 'greetings']})
于 2013-09-19T04:53:31.237 回答