根据另一个键的值的第一次出现替换键的值
Replace value of a key based on first occurrence of value of another key
假设我有一个字典列表,如下所示:
list=[{"name":'foo',"bleh":True},{"name":"foo","bleh":False},{"name":"panda", "bleh":True}]
对于名称 'foo' 的第一次出现,我想将它的 'bleh' 值复制到以后出现的所有 'foo'。
我正在考虑找到列表中第一次出现的索引,并以某种方式使用它在所有其他词典中进行更改。
注意:
我不想为 "foo" 对其进行硬编码,它应该适用于列表中每个词典中键 "name" 的每个唯一值。
创建字典以记住 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
的值来更改所有其他 foo
中的 bleh
并且它将使用第一个 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}
]
假设我有一个字典列表,如下所示:
list=[{"name":'foo',"bleh":True},{"name":"foo","bleh":False},{"name":"panda", "bleh":True}]
对于名称 'foo' 的第一次出现,我想将它的 'bleh' 值复制到以后出现的所有 'foo'。
我正在考虑找到列表中第一次出现的索引,并以某种方式使用它在所有其他词典中进行更改。
注意: 我不想为 "foo" 对其进行硬编码,它应该适用于列表中每个词典中键 "name" 的每个唯一值。
创建字典以记住 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
的值来更改所有其他 foo
中的 bleh
并且它将使用第一个 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}
]