Понимание Dict: добавление к значению ключа, если ключ присутствует, создайте новую пару ключ: значение, если ключ отсутствует - PullRequest
0 голосов
/ 13 марта 2020

Мой код выглядит следующим образом:

for user,score in data:
    if user in res.keys():
        res[user] += [score]
    else:
        res[user] = [score]

, где данные - это список списков, упорядоченных таким образом:

data = [["a",100],["b",200],["a",50]] 

и желаемый результат:

res = {"a":[100,50],"b":[200]}

Можно ли сделать это с одним словарным пониманием?

Ответы [ 2 ]

4 голосов
/ 13 марта 2020

Это можно упростить, используя dict.setdefault или collections.defaultdict

Пример:

data = [["a",100],["b",200],["a",50]]
res = {}   #or collections.defaultdict(list)
for k, v in data:
    res.setdefault(k, []).append(v)  #if defaultdict use res[k].append(v)

print(res)

Выход:

{'a': [100, 50], 'b': [200]}
0 голосов
/ 13 марта 2020

вы можете использовать .update для своего словаря ..

data = [["a",100],["b",200],["a",50]]
dictionary = dict()

for user,score in data:
    if user in dictionary.keys():
        dictionary[user] += [score]
    else:
        dictionary.update({user:[score]})

вывод:

{'a': [100, 50], 'b': [200]}
...