我是一名新手python程序员,我遇到了一个家庭作业问题。
我想在不使用**dict
方法的情况下组合词典(尝试使用update()
),因为我想保留任何重复的键。我可以使用具有多个值的键。
有人能指出我正确的方向吗?
另外,我在python 3.3中这样做
答案 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']})