假设我有一个字典列表,如下所示:
list=[{"name":'foo',"bleh":True},{"name":"foo","bleh":False},{"name":"panda", "bleh":True}]
对于名称“ foo”的首次出现,我想将其“ bleh”值复制到所有以后出现的“ foo”中。
我当时正在考虑查找列表中第一个出现的索引,并以某种方式使用它在所有其他词典中进行更改。
注意: 我不想将其硬编码为“ foo”,它应该适用于列表中每个字典中键“ name”的每个唯一值。
答案 0 :(得分:3)
创建字典以修改诸如remember['foo'] = True
之类的值并迭代您的列表。
对于每个元素,检查名称是否在remember
中。如果没有记住名称,则将其添加到remember
。如果名称在remember
中,则将remember
中的值用作bleh
中的值。
data = [
{"name":'foo', "bleh":True},
{"name":"foo", "bleh":False},
{"name":"panda", "bleh": 'XXX'},
{"name":"panda", "bleh":'Hello'},
{"name":"panda", "bleh":'World'},
{"name":"foo", "bleh":'other'},
]
remember = dict()
for item in data:
if item['name'] not in remember:
remember[item['name']] = item['bleh']
else:
item['bleh'] = remember[item['name']]
print(data)
它将使用前foo
中的值来更改所有其他bleh
中的foo
,还将使用前pandas
中的值来更改其中的bleh
所有其他pandas
。
结果:
[
{'name': 'foo', 'bleh': True},
{'name': 'foo', 'bleh': True},
{'name': 'panda', 'bleh': 'XXX'},
{'name': 'panda', 'bleh': 'XXX'},
{'name': 'panda', 'bleh': 'XXX'},
{'name': 'foo', 'bleh': True}
]