преобразовать список в словарь и добавить дубликаты значений ключей - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь найти значение dict следующим образом

{'deepak': 0, 'nayak': 0}

Я пытался таким образом

d={}
d['deepak'] = 0
d['nayak'] = 0 
f = [ '1, deepak, 15',
'2, nayak, 10',
 '3, deepak, 10',
 '4, nayak, 13']
for lines in f:
print(lines)
##appropriate logic to excute#
    print(d)

Ожидаемое значение o / p должно быть

{'deepak': 25, 'nayak': 23}

Ответы [ 3 ]

2 голосов
/ 26 марта 2019

Вы в значительной степени там

d = {}

f = [ '1, deepak, 15',
'2, nayak, 10',
 '3, deepak, 10',
 '4, nayak, 13']

for line in f:
    # by splitting on the comma and trailing space
    # you can unpack those three entries into a throw-away var,
    # k, and v and you only need to convert v to int
    _, k, v = line.split(', ')
    d[k] = d.get(k, 0) + int(v)

d
{'deepak': 25, 'nayak': 23}


1 голос
/ 26 марта 2019
d={}
d['deepak'] = 0
d['nayak'] = 0 
f = [ '1, deepak, 15',
'2, nayak, 10',
 '3, deepak, 10',
 '4, nayak, 13']
for lines in f:
    print(lines)
    ##appropriate logic to excute#
    line = lines.split(', ')
    d[line[1]] += int(line[-1])
print(d)
1 голос
/ 26 марта 2019

Вы можете использовать Counter из модуля collections, чтобы сократить некоторые шаблоны, необходимые при использовании обычного dict

from collections import Counter

f = [
    '1, deepak, 15',
    '2, nayak, 10',
    '3, deepak, 10',
    '4, nayak, 13'
]

result = Counter()

for x in f:
    _, name, count = x.split(', ')
    result[name] += int(count)

print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...