python - 列表中的字典:使用 .update() 进行条件更新
问题描述
我正在尝试nodes
使用另一个source
带有条件的列表中的元组来更新列表中的字典。
元组列表:
source = [('144 IV 285', 16),
('144 IV 1', 11),
('141 IV 155', 7)]
词典列表:
nodes = [{'id': '144 IV 285','date': '2018-08-15','relevancy': 10, 'outDegree': 18},
{'id': '144 IV 240','date': '2016-08-15','relevancy': 4, 'outDegree': 10}]
'nodes' 中的每个项目都应由inDegree
基于 'source' 列表的新键 ( ) 值对扩展。我的代码:
for item in sources:
for item2 in nodes:
if item2["id"] == item[0]:
item2.update( {"inDegree": item[1]})
else:
item2.update( {"inDegree": 0})
inDegree
问题:如果“源”列表中的“节点”中的项目没有匹配的 ID,我如何通过源列表中的值或 0 填充键?
解决方案
问题是source
即使在匹配之后它仍在迭代,因此会覆盖以前的更新。您可以打开包装source
并进行比较:
for item2 in nodes:
sources = list(zip(*source))
if item2["id"] in sources[0]:
item2.update({"inDegree": sources[1][sources[0].index(item2["id"])]})
else:
item2.update({"inDegree": 0})
print(nodes)
[{'id': '144 IV 285',
'date': '2018-08-15',
'relevancy': 10,
'outDegree': 18,
'inDegree': 16},
{'id': '144 IV 240',
'date': '2016-08-15',
'relevancy': 4,
'outDegree': 10,
'inDegree': 0}]
推荐阅读
- java - SVG 或 VectorDrawable 运行时构建器
- asp.net-core - ASP.Net 核心和 ProcessStartInfo
- android - wifi断开后我的重复警报不起作用
- google-app-engine - 使用 TCP 从 App Engine 自定义环境连接到 Google Cloud SQL 时出错
- ios - 从数组中删除特定值,而不是使用索引路径删除
- html - 使用 display flex 和按钮下的显示块按钮
- javascript - 在 Web 浏览器中多次接收 FCM 推送通知
- python-3.x - 如何查找内部列表中的最后一个值在python的嵌套列表中重复了多少次?
- powershell - 用 Powershell 减去日期
- python - 在 python 中解析 csv 并在其他 csv 中写入,是的选择存在,如果选择不存在,则没有