利用Lis制作词典

2024-04-27 00:41:19 发布

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

有一个列表:

List= ["sugar:10", "coffee:23", "sugar:47", "salt:26"]

从那张单子上我需要查字典:

Dict = {"sugar":57, "coffee":23, "salt":26}

我以前也做过一些类似的例子,但对于这个例子,我只有一个大概的想法(首先拆分列表),如果两个值有相同的键,我需要将它们加在一起。你知道吗

有人能帮我一下,告诉我怎么解决这个问题吗?你知道吗


Tags: 列表sugardictlist例子单子saltcoffee
3条回答

你可以用Counter做有趣的事情!你知道吗

from collections import Counter

def f(x):
    x, y = x.split(':')
    return Counter({x : int(y)})

sum(map(f, lst), Counter())
Counter({'coffee': 23, 'salt': 26, 'sugar': 57})

如果您关心性能,循环可能更合适。你知道吗

r = Counter()
for x in lst:
    r.update(f(x))

r
Counter({'coffee': 23, 'salt': 26, 'sugar': 57})

使用^{}可以很容易地实现这一点:

from collections import defaultdict

li = ["sugar:10", "coffee:23", "sugar:47", "salt:26"]

d = defaultdict(int)

for item in li:
    split_item = item.split(':')
    d[split_item[0]] += int(split_item[1])

print(d)
#  defaultdict(<class 'int'>, {'sugar': 57, 'coffee': 23, 'salt': 26})
mydict={}
for i in List:
    splited=i.split(":")
    if(splited[0] in mydict):
        mydict[splited[0]]+=int(splited[1])
    else:
        mydict[splited[0]]=int(splited[1])

相关问题 更多 >