为了账号安全,请及时绑定邮箱和手机立即绑定

删除python字典中的重复项

删除python字典中的重复项

茅侃侃 2021-06-08 09:41:08
我在 python 中有一个字典列表,我想用重复值覆盖旧值。请让我知道我该怎么做。{'message': [{'name': 'raghav', 'id': 10}, {'name': 'raghav', 'id': 11}]}输出应该是:{'message': [ {'name': 'raghav', 'id': 11}]}
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

我不知道您所说的“用重复值覆盖旧值”是什么意思。如果您的意思是只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}

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


查看完整回答
反对 回复 2021-06-09
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

干得好:


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



查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号