列表中的字典:使用 .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填充键?


红颜莎娜
浏览 203回答 2
2回答

慕娘9325324

问题是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}]

慕的地10843

尝试这个:for item in nodes:    for item2 in source:        if item["id"] == item2[0]:            item.update( {"inDegree": item2[1]})            break        else:            item.update( {"inDegree": 0})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python