python - 根据另一个键的值的第一次出现替换键的值
问题描述
假设我有一个字典列表,如下所示:
list=[{"name":'foo',"bleh":True},{"name":"foo","bleh":False},{"name":"panda", "bleh":True}]
对于名称“foo”的第一次出现,我想将其“bleh”值复制到所有未来出现的“foo”中。
我正在考虑找到列表中第一次出现的索引,并以某种方式使用它来在所有其他词典中进行更改。
注意:我不想将它硬编码为“foo”,它应该适用于列表中每个字典中键“name”的每个唯一值。
解决方案
创建字典以记住值,例如remember['foo'] = True
并迭代您的列表。对于每个元素,检查 name 是否在remember
. 如果 name 不在记忆中,则将其添加到remember
. 如果 name 是 inremember
然后使用 value fromremember
作为 value in 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}
]
推荐阅读
- typo3 - TYPO3 低级数据库关系始终为空
- java - 通过 Java 在 JMeter 中的转换错误。缺少哪些依赖项?
- jenkins - Jenkins使用星号检查路径中是否存在文件
- javascript - 媒体查询 CSS 覆盖 CSS 而不满足宽度条件
- oracle - 如何通过电子邮件发送 pl/sql 程序状态?
- android - Kotlin Multiplatform - iOS + Android 之间的策略共享
- image-processing - 来自速度分量的光流
- c++ - SFML C++ 视觉工作室
- powershell - 将返回值存储到变量
- python - 在 Django 中,如何使用外键将下拉列表与另一个表中的数据绑定?