我是一个新手 python 程序员,我被困在一个家庭作业问题上。
我想在**dict
不使用该update()
方法的情况下组合字典(尝试使用),因为我想保留任何重复的键。我可以拥有一些具有多个值的键。
有人能指出我正确的方向吗?
另外,我在 python 3.3 中这样做
我是一个新手 python 程序员,我被困在一个家庭作业问题上。
我想在**dict
不使用该update()
方法的情况下组合字典(尝试使用),因为我想保留任何重复的键。我可以拥有一些具有多个值的键。
有人能指出我正确的方向吗?
另外,我在 python 3.3 中这样做
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 的所有值的列表。
字典中不能有重复的键。密钥必须是唯一的,但我认为您正在寻找的是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']})