gpt4 book ai didi

python - 合并字典项值的重复列表

转载 作者:行者123 更新时间:2023-11-28 22:37:13 26 4
gpt4 key购买 nike

我有以下具有重复值的字典列表(教练)。

d = [
{"players": [{"id": 179, "name": "Santosh"}], "coach": "Xavi Alonso"},
{"players": [{"id": 180, "name": "Hari"}], "coach": "Xavi Alonso"},
{"players": [{"id": 175, "name": "Hitman"}], "coach": "Anna Puyol"}
]

我想根据教练姓名合并重复项目。我怎样才能做到这一点?

def exportplayers(request):
d = [
{"players": [{"id": 179, "name": "Santosh"}, {"id": 180, "name": "Hari"}], "coach": "Xavi Alonso"},
{"players": [{"id": 175, "name": "Hitman"}], "coach": "Anna Puyol"}
]


return HttpResponse(json.dumps(d))

最佳答案

一个可能的解决方案是构建一个辅助字典,以coach 为键,players 列表为值

d = [
{"players": [{"id": 179, "name": "Santosh"}], "coach": "Xavi Alonso"},
{"players": [{"id": 180, "name": "Hari"}], "coach": "Xavi Alonso"},
{"players": [{"id": 175, "name": "Hitman"}], "coach": "Anna Puyol"}
]
aux = collections.defaultdict(list)
for e in d:
aux[e['coach']].append(e['players'][0])

aux 现在是:

>>> aux
defaultdict(<type 'list'>, {'Xavi Alonso': [[{'id': 179, 'name': 'Santosh'}], [{'id': 180, 'name': 'Hari'}]], 'Anna Puyol': [[{'id': 175, 'name': 'Hitman'}]]})

然后你可以用列表推导来构建你的返回值

[{'players':v, 'coach':k} for k,v in aux.items()]

这是

[{'players': [{'id': 179, 'name': 'Santosh'}, {'id': 180, 'name': 'Hari'}], 'coach': 'Xavi Alonso'}, {'players': [{'id': 175, 'name': 'Hitman'}], 'coach': 'Anna Puyol'}]

关于python - 合并字典项值的重复列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com