我有一个字典列表,我想附加3个额外的键值对
词典列表
[
{'by': 270.74, 'by_l': [270.74], 'date_time': '2019-07-08 14:21:42', 'name': 'test_1', 't_avg': 29.69, 't_runs': [29.69]},
{'by': 432.17, 'by_l': [432.17], 'date_time': '2019-07-08 14:21:47', 'name': 'test_2', 't_avg': 47.39, 't_runs': [47.39]}
]
必须附加的东西
{'max': 70, 'min': 30, 'std_dev': 15.01},
{'max': 70, 'min': 30, 'std_dev': 15.01}`
所以看起来像这样:
[
{'by': 270.74, 'by_l': [270.74], 'date_time': '2019-07-08 14:21:42', 'name': 'test_1', 't_avg': 29.69, 't_runs': [29.69], 'max': 70, 'min': 30, 'std_dev': 15.016218454280247},
{'by': 432.17, 'by_l': [432.17], 'date_time': '2019-07-08 14:21:47', 'name': 'test_2', 't_avg': 47.39, 't_runs': [47.39], 'max': 70, 'min': 30, 'std_dev': 15.01}
]
由于我将max
、min
和std_dev
存储在各自的列表中,因此我尝试了以下操作:
past_data = {
'max': 0,
'min': 0,
'std_dev': 0
}
for x in range(0, len(max_list)):
past_data['max'] = max_list[x]
past_data['min'] = min_list[x]
past_data['std_dev'] = std_dev_list[x]
output_data.append(past_data)
但我得到以下结果:
[
{'by': 270.74, 'by_l': [270.74], 'date_time': '2019-07-08 14:21:42', 'name': 'test_1', 't_avg': 29.69, 't_runs': [29.69]},
{'by': 432.17, 'by_l': [432.17], 'date_time': '2019-07-08 14:21:47', 'name': 'test_2', 't_avg': 47.39, 't_runs': [47.39]},{'max': 70, 'min': 30, 'std_dev': 15.01}, {'max': 70, 'min': 30, 'std_dev': 15.01}
]
我看到两个问题:
1)如何同步迭代两个列表
2)给定两本词典,如何将一本合并到另一本
首先,
zip
通常是最好的:如果您想使用显式列表索引,它将如下所示:
对于第二个,使用
update
将所有键/值对从一个dict复制到另一个dict。这会对更新后的字典进行变异,因此不需要构建新的列表如果你想避免编辑最初的字典,那就有点难了。一种方法是:
有更简洁的方法从现有的浅薄副本构建新的dict,但我个人认为它们更难理解
这是一个浅层复制,这可能很好,但可能会对
by_l
值产生奇怪的后果—它会将对同一list对象的引用复制到新dict中,因此改变该值也会改变原始dict。不过,这可能超出了我们讨论的范围你可以在一条线上完成
这将从旧列表和新列表中获取每一对词典,并将这两个词典合并为一个
相关问题 更多 >
编程相关推荐