删除python词典中的重复项

时间:2018-09-04 04:26:19

标签: python dictionary

我在python中有一个字典列表,我想用重复值覆盖旧值。请让我知道我该怎么办。

{'message': [{'name': 'raghav', 'id': 10}, {'name': 'raghav', 'id': 11}]}

输出应为:

{'message': [ {'name': 'raghav', 'id': 11}]}

2 个答案:

答案 0 :(得分:1)

您在这里:

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()] 

答案 1 :(得分:1)

我不知道“用重复值覆盖旧值”是什么意思。如果您只是想从列表中选择第二个dict,则可以:

print({k: [v[1]] for (k, v) in data.items()})

如果您的想法是在列表中移动时以一个较新的值“ id”更新“名称”,那么也许:

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}

但是,如果您可以控制数据的表示方式,则可以重新考虑。您可能想要一个不同的数据结构。