【发布时间】:2013-09-21 00:55:07
【问题描述】:
如果这里已经探讨过这个问题,请提前道歉 - 我在这里查看了不同的答案,但找不到我需要的。
我的目标是创建一个这样的字典 -- {'a':[10, 9, 10, 10], 'b':[10, 9, 1, 0], 'c':[0, 5, 0, 1], and so on}
我拥有的是具有重复键的多个字典(每个其他字典中的键相同),像这样
{'a':10, 'b': 0, 'c': 2}
{'a':7, 'b': 4, 'c': 4}
{'a':4, 'b': 5, 'c': 3}
我无法知道此类字典的数量,或者是否有直到“f”或“g”的键,但我知道这些键是重复的。我试过defaultdict 但我得到的是--
defaultdict(<type 'list'>, {'a': [10]})
defaultdict(<type 'list'>, {'a': [10], 'b': [3]})
defaultdict(<type 'list'>, {'a': [10], 'b': [3], 'c': [0]})
然后下一个字典也一样--
defaultdict(<type 'list'>, {'a': [4]})
defaultdict(<type 'list'>, {'a': [4], 'b': [5]})
defaultdict(<type 'list'>, {'a': [4], 'b': [5], 'c': [1]})
上面输出的代码是--
d = collections.defaultdict(list)
for k, v in z.iteritems():
d[k].append(v)
c = d.items()
print d
如果我改为使用print c(打印d.items()),我会得到--
[('a', [10])]
[('a', [10]), ('b', [3])]
[('a', [10]), ('c', [0]), ('b', [3])]
再次为每个字典重复。如何获得 1 个 dict 保存所有键、值 -
{'a':[10,0,..], 'b':[4, 3, 4,..], etc.} ?
我还应该补充一点,我拥有的 dicts 是 for 循环的结果,而不是单独存储在唯一变量中。
【问题讨论】:
标签: python dictionary key duplicates defaultdict