python-3.x - 字典列表中的广播值
问题描述
我想在
lst1=[{'a1':0,'a2':0,'a3':0,'a4':0,'a5':0},
{'b1':0,'b2':0,'b3':0,'b4':0,'b5':0},
{'c1':0,'c2':0,'c3':0,'c4':0,'c5':1}
]
如果字典中有 1,那么字典中的所有值都将广播到 1 期望输出为
lst1=[{'a1':0,'a2':0,'a3':0,'a4':0,'a5':0},
{'b1':0,'b2':0,'b3':0,'b4':0,'b5':0},
{'c1':1,'c2':1,'c3':1,'c4':1,'c5':1}]
问题是,我们不知道字典的键,'c1' 或 'a1' 将是随机的,但总是知道要搜索字典的最后一个元素,例如我们总是搜索 'a5' 的值,'b5' 或 'c5'。谢谢您的回答
像 Rakesh 回答的魅力一样工作但是我有新的数据结构,我如何解决这个问题
lst1=[[{'a1':'zz','lb':0},{'a2':'zz','lb':0},{'a3':'zz','lb':0}],
[{'b1':'zz','lb':0},{'b2':'zz','lb':0},{'a3':'zz','lb':0}],
[{'c1':'zz','lb':0},{'c2':'zzz','lb':0},{'c3':'zz','lb':1}]]
期望的输出
lst1=[[{'a1':'zz','lb':0},{'a2':'zz','lb':0},{'a3':'zz','lb':0}],
[{'b1':'zz','lb':0},{'b2':'zz','lb':0},{'a3':'zz','lb':0}],
[{'c1':'zz','lb':1},{'c2':'zzz','lb':1},{'c3':'zz','lb':1}]]
解决方案
这是一种使用列表推导和字典推导的方法。
前任:
lst1=[{'a1':0,'a2':0,'a3':0,'a4':0,'a5':0}, {'b1':0,'b2':0,'b3':0,'b4':0,'b5':0}, {'c1':0,'c2':0,'c3':0,'c4':0,'c5':1}]
print([{k: 1 for k, v in i.items()} if 1 in i.values() else i for i in lst1])
输出:
[{'a1': 0, 'a2': 0, 'a3': 0, 'a4': 0, 'a5': 0},
{'b1': 0, 'b2': 0, 'b3': 0, 'b4': 0, 'b5': 0},
{'c1': 1, 'c2': 1, 'c3': 1, 'c4': 1, 'c5': 1}]
根据评论编辑
lst1=[[{'a1':'zz','lb':0},{'a2':'zz','lb':0},{'a3':'zz','lb':0}], [{'b1':'zz','lb':0},{'b2':'zz','lb':0},{'a3':'zz','lb':0}], [{'c1':'zz','lb':0},{'c2':'zzz','lb':0},{'c3':'zz','lb':1}]]
for elem in lst1:
sync = False
for i in elem:
if i['lb'] == 1:
sync = True
break
if sync:
for i in elem:
i['lb'] = 1
print(lst1)
输出:
[[{'a1': 'zz', 'lb': 0}, {'a2': 'zz', 'lb': 0}, {'a3': 'zz', 'lb': 0}],
[{'b1': 'zz', 'lb': 0}, {'b2': 'zz', 'lb': 0}, {'a3': 'zz', 'lb': 0}],
[{'c1': 'zz', 'lb': 1}, {'c2': 'zzz', 'lb': 1}, {'c3': 'zz', 'lb': 1}]]
推荐阅读
- ios - 是否有可能在用户松开手指之前放弃对 UISwitch 元素的控制?
- authentication - 在 Kerberos 数据库中找不到服务器 -ERR_S_PRINCIPLE_UNKNOWN(7)
- java - 自动化:将文件从源文件夹一个一个移动到目标文件夹并从源文件夹中删除文件
- c# - .NET Core 视图使用 Razor - 多个相同的路由
- php - 页面功能不适用于多语言网站。我该如何解决?
- excel - 粘贴到 Excel 中而不会丢失使用 VBA 的条件格式
- sql - Postgres SQL:使用 in 子句时查找异常
- vb.net - 从生产而不是从 VB.Net 2015 IDE 运行时找不到获取方法
- sql - 提取字符串中字符“_”之后的字符
- xaml - 多个属性的 XAML 转换器绑定