簡體   English   中英

如何在鍵值的字典列表中進行比較?

[英]How can I do comparison in List of dictionaries for key values?

我在下面有這個字典列表。 我想要的是搜索相同的“別名”並添加他們的分數以將它們組合成一個字典並制作一個更清晰的列表。

d=[{"alias": "2133232", "score": 144}, {"alias": "u234243", "score": 34}, {"alias": "u234243", "score": 34},{"alias": "2133232", "score": 14}, {"alias": "u234243", "score": 4}, {"alias": "u234243", "score": 344}]

Output 應如下所示:

`[{"alias": "2133232", "score": 158}, {"alias": "u234243", "score": 416}]`

Python 2.5:

from collections import defaultdict 

h = defaultdict(int)
for i in d:
    h[i['alias']] += i['score']

在 Python 3.1+ 中:

import collections
res = collections.Counter()
for dct in d:
   res[dct['alias']] += dct['score']
print(repr(res))

在 3.1 之前,您可以使用此計數器 class ,將Counter()替換為collections.defaultdict(int) (2.5+),或以下內容:

res = {}
for dct in d:
   alias = dct['alias']
   if alias not in res:
      res[alias] = 0
   res[alias] += dct['score']
print(repr(res))
from itertools import groupby
from operator import itemgetter
dict(((u, sum(row['score'] for row in rows)) for u, rows in
    groupby(sorted(d, key=itemgetter('alias')), key=itemgetter('alias'))))
# {'2133232': 158, 'u234243': 416}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM