我想把一本字典和另一本字典合并起来。我有两把钥匙,一把是独一无二的,另一把不是独一无二的。我想加入非唯一键上的信息,并保留所有信息,因为它是唯一键,即唯一id的数量必须保持不变。你知道吗
有什么办法可以做到这一点吗?你知道吗
这是第一本字典:
names = [
{'id': '1', 'name': 'Peter', 'category_id': '25'},
{'id': '2', 'name': 'Jim', 'category_id': '20'},
{'id': '3', 'name': 'Toni', 'category_id': '20'}
]
这是第二本字典:
categories = [
{'category_id': '25', 'level': 'advanced'},
{'category_id': '20', 'level': 'beginner'}
]
这就是我想要达到的目标:
all = [
{'id': '1', 'name': 'Peter', 'category_id': '25', 'level': 'advanced'},
{'id': '2', 'name': 'Jim', 'category_id': '20', 'level': 'beginner'},
{'id': '3', 'name': 'Toni', 'category_id': '20', 'level': 'beginner'}
]
编辑:
names = [
{'id': '1', 'name': 'Peter', 'category_id': '25'},
{'id': '2', 'name': 'Jim', 'category_id': '20'},
{'id': '3', 'name': 'Toni', 'category_id': '20'}
]
categories = [
{'category_id': '25', 'level': 'advanced'},
{'category_id': '20', 'level': 'beginner'}
]
def merge_lists(l1, l2, key):
merged = {}
for item in l1+l2:
if item[key] in merged:
merged[item[key]].update(item)
else:
merged[item[key]] = item
return merged.values()
courses = merge_lists(names, categories, 'category_id')
print(courses)
提供:
([{'id': '1', 'name': 'Peter', 'category_id': '25', 'level': 'advanced'},
{'id': '3', 'name': 'Toni', 'category_id': '20', 'level': 'beginner'}])
考虑您真正想要做的:将与每个类别关联的级别添加到
names
dict中。因此,首先,创建从类别到关联级别的映射:然后是
names
列表中每个dict的一个简单转换:生成的
names
列表是:创建从
category_id
到其他字段的映射,然后在循环中组合字典,例如:在Python 3.5+中,您可以使用非常酷的新语法:
相关问题 更多 >
编程相关推荐