将列表转换为字典并添加重复的键值

2024-09-24 06:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找到像这样的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}

Tags: toinfordictlinesprintlogic正试图
3条回答
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)

您可以使用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)

你差不多到了

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}


相关问题 更多 >