猿问

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

我试图找到这样的字典值


{'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}


慕哥6287543
浏览 203回答 3
3回答

繁花如伊

你几乎在那里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}

慕桂英546537

d={}d['deepak'] = 0d['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 Counterf = [    '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)
随时随地看视频慕课网APP

相关分类

Python
我要回答