对两个JSON列表进行操作并更新它们的有效方法

时间:2019-03-26 06:21:51

标签: python json list dictionary optimization

我想对包含JSON的python列表进行操作,以使{{1}中的key的{​​{1}}值替换为{{1} }}值等于source_split_response中的name值。

online_source

Python代码:

onlineId

打印:key

预期输出:source_split_response

  

尽管我得到了所需的最终输出,但它们是   更有效和pythonic的方式来实现相同的目标?

1 个答案:

答案 0 :(得分:1)

您可以保留ID到名称的映射关系,以避免重复遍历整个数组以匹配它们:

idDict = dict()

for entry in online_source:
    idDict[entry['onlineId']] = entry['name']

for entry in source_split_response:
    if entry['key'] in idDict:
        entry['key'] = idDict[entry['key']]

print(source_split_response)

我不知道您为什么想要列表理解,但这是一种方法:

idDict = {entry['onlineId']:entry['name'] for entry in online_source}

[entry.update({'key': idDict.get(entry['key'], entry['key'])}) for entry in source_split_response]

print(source_split_response)