拉链重复到预先存在的字典

时间:2016-02-16 04:19:12

标签: python dictionary

我有一份表格字典:

my_dict = {'apples': 'NA', 'pears': 'NA', 'oranges': 'NA'}

和一个看起来像的拉链:

my_zip = {([10, 10], 'apples'), ([100, 2], 'apples')}

我想将这些值添加到my_dict中以产生此效果:

{'apples': [[10,10], [100, 2]], 'pears': 'NA', 'oranges': 'NA'}

1 个答案:

答案 0 :(得分:2)

我可能会使用defauldict代替:

from collections import defaultdict

my_zip = [([10, 10], 'apples'), ([100, 2], 'apples')]
d = defaultdict(list)
for v, k in my_zip:
    d[k].append(v)

从那里开始,如果你真的希望'NA'存在不存在的值,你可以d.get('oranges', 'NA'),或者另一个技巧是重置default_factory

d.default_factory = lambda: 'NA'

虽然我不确定我推荐这个。通常我提倡在您使用"默认"完成后将其设置为None。您defaultdict的行为。

您还可以迭代原始密钥,只需将默认值设置为'NA'

d.default_factory = None  # now d behaves like a regular dict
for key, val in my_dict.items():
    d.setdefault(key, val)