我有一个字典,其中键作为字符串,长度为6的列表作为值。该列表由一个字典组成,该字典的密钥为字符串,它的相应值为例如
{ 'conv_01': [{'high': 0},
{'low': 16},
{'cummulative': 121.41315},
{'min': -3.2385397},
{'max': 46.390823364257813},
{'pos': 1}] }
更新此词典元素的最有效方法是什么。对于例如如果我想将pos更新为 18 。
{'conv_01': [{'high': 0},
{'low': 16},
{'cummulative': 121.41315},
{'min': -3.2385397},
{'max': 46.390823364257813},
{'pos': 18}] } # Expected output
根词典的总体大小很大,因此效率很重要。
UPADTE w.r.t.评论
答案 0 :(得分:1)
如果给定键的位置不变,只需直接使用它:
new_value = 18
d['conv_01'][-1]['pos'] = new_value # last entry
d['conv_01'][5]['pos'] = new_value # 6th entry
如果密钥是可变的或条目的顺序未知,则需要执行搜索。使用列表推导来重新构建列表:
key, new_value = 'pos', 18
d['conv_01'] = [{key: new_value} if key in d else d for d in d['conv_01']]
但是,如果您需要重复进行此类更改,那么将您的词典列表预先转换为一个字典会更加高效,然后直接使用该键:
d['conv_01'] = dict(next(iter(d.items())) for d in d['conv_01'])
d['conv_01][key] = new_value
这假设嵌套词典中的所有键都是唯一的。