为python组合无限数量的字典

时间:2013-09-19 04:43:05

标签: python dictionary key

我是一名新手python程序员,我遇到了一个家庭作业问题。

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

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

另外,我在python 3.3中这样做

2 个答案:

答案 0 :(得分: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])

collections.defaultdict调用您指定的函数,以便为您尝试访问但尚未具有值的任何键生成默认值。因此,collections.defaultdict(list)是一个dict,其默认值为所有键的列表。此代码将生成输出dict映射键到输入序列中所有值的列表。

答案 1 :(得分: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']})