【发布时间】:2013-11-22 19:00:54
【问题描述】:
我有两个嵌套字典列表,它们的键相同,但值不同:
d1 = {
'distilled ': [{'water': '45'}, {'vodka': '9'}, {'vinegar': '7'}, {'beer': '6'}, {'alcohol': '5'}, {'whiskey': '5'}],
'planted': [{'tree': '30'}, {'seed': '28'}, {'flower': '20'}, {'plant': '7'}, {'bomb': '4'}, {'garden': '2'}]
}
和
d2 = {
'distilled ': [{'water': '14'}, {'vinegar': '9'}, {'wine': '8'}, {'alcohol': '8'}, {'liquid': '7'}, {'whiskey': '6'}, {'beer': '5'}],
'planted ': [{'flower': '28'}, {'tree': '18'}, {'seed': '9'}, {'vegetable': '4'}, {'bush': '3'}, {'grass': '3'}, {'garden': '3'}]
}
我想以保留值并仅合并嵌套字典中的键的方式合并它们。所以结果看起来像:
{
'distilled ': [('water', '45', '14'), ('vodka', '9'), ('vinegar', '7', '9'), ('beer', '6', '5'), ('alcohol', '5'), ('whiskey', '5'), ('wine', '8')],
'planted': [('tree', '30', '18'), ('seed', '28', '9'), ('flower', '20', '7'), ('plant', '7'), ('bomb', '4'), ('garden', '2', '3')]
}
我尝试使用以下方法合并两者:
d_merged = { k: [ d1[k], d2_to_compare[k] ] for k in d1 }
但显然,结果中只显示了第一个字典的值。您对如何解决此问题有任何想法吗?非常感谢您。
我不确定从这里走哪条路。非常感谢任何建议!非常感谢。
【问题讨论】:
-
天哪,还在坚持字典列表中只有一个键的结构吗?这使这项特定任务变得不必要地更加困难。
-
你所有的字典都是单独的对象,所以你不能只枚举它们的所有键并在其他字典列表中查找键。
-
@MartijnPieters 谢谢。不幸的是,情况确实如此,因为它们来自不同的数据库,我想以某种方式合并它们而不会丢失信息。我没有选择使它们成为单独的对象。 :(
标签: python python-3.x dictionary merge