[英]Remove duplicates in python dictionary
我在 python 中有一个字典列表,我想用重复值覆盖旧值。 请让我知道我该怎么做。
{'message': [{'name': 'raghav', 'id': 10}, {'name': 'raghav', 'id': 11}]}
输出应该是:
{'message': [ {'name': 'raghav', 'id': 11}]}
干得好:
d = {'message': [{'name': 'raghav', 'id': 10}, {'name': 'raghav', 'id': 11}]}
#loop over outer dictionary
for key, value in d.items():
d[key] = [dict([t for k in value for t in k.items()])]
print(d)
根据您的要求:
d = {'message': [ {'name': 'raghav', 'id': 11}, {'name': 'krish', 'id': 20}, {'name': 'anu', 'id': 30}]}
for key, value in d.items():
print [dict((k1,v1)) for k1,v1 in dict([tuple(i.items()) for i in value for val in i.items()]).items()]
我不知道您所说的“用重复值覆盖旧值”是什么意思。 如果您的意思是只从列表中选择第二个dict
,您可以:
print({k: [v[1]] for (k, v) in data.items()})
如果想法是在您沿着列表移动时使用较新的“id”值更新“name”,那么可能:
def merge_records(data):
records = data['message']
users = {}
for record in records:
name = record['name']
id_ = record['id']
users[name] = id_
new_records = []
for name, id_ in users.items():
new_records.append({'name': name, 'id': id_})
return {'message': new_records}
但是,如果您可以控制数据的表示方式,则可能会重新考虑。 您可能需要不同的数据结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.