我有以下字典:

{'Atlanta': [['Bear', 34274], ['Deer', 13747], ['Bee', 83743]],
 'New York': [['Bear', 987], ['Dove', 2635]]}


具有列表值的键,该值包含带有成对的动物和数字的列表。
现在,我希望如果其中一个键中存在Animal,那么我希望所有其他键中都包含Animal,但要用零而不是数字,因此字典应如下所示:

{'Atlanta': [['Bear', 34274], ['Deer', 13747], ['Bee', 83743], ['Dove', 0]],
 'New York': [['Bear', 987], ['Dove', 2635], ['Deer', 0], ['Bee', 0]]}


我不知道该怎么做。有人能帮我吗?

最佳答案

首先查找所有动物名称:

d = {'Atlanta': [['Bear', 34274], ['Deer', 13747], ['Bee', 83743]],
     'New York': [['Bear', 987], ['Dove', 2635]]}

>>> animals = {animal for value in d.values() for animal, _ in value}
>>> animals
{'Bear', 'Bee', 'Deer', 'Dove'}


并用零填充丢失的那些:

for key, value in d.items():
    selected_animals = {animal for animal, _ in value}
    for name in animals - selected_animals:
        d[key].append([name, 0])


现在:

>>> d
{'Atlanta': [['Bear', 34274], ['Deer', 13747], ['Bee', 83743], ['Dove', 0]],
 'New York': [['Bear', 987], ['Dove', 2635], ['Deer', 0], ['Bee', 0]]}

关于python - 向键添加值,具体取决于该值是否在另一个键中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49187748/

10-09 21:56