首页 > 解决方案 > 在不使用 for 循环的情况下增加字典的最简单方法是什么?

问题描述

我正在努力提高我对字典列表理解的理解。我根据车道上的内容创建了一个愚蠢的列表:

car = ['Ram', 'Ford', "Jeep", 'Jeep', 'ram']

我可以创建字典并遍历列表

cardict = dict()
for count in car:
    count = count.upper()
    cardict[count] = cardict.get(count, 0) + 1
print(cardict)

那返回

{'RAM': 3, 'DODGE': 1, 'FORD': 1}

我也一直在努力提高我对理解的理解。所以,我也尝试过使用 fromkeys() 和 get()

例如,

again = dict.fromkeys(cardict, 0) + 1

但是,我收到类型错误。如何浏览字典并增加列表中的项目?我正在寻找“Pythonic”的方法来做到这一点,所以我假设有一种方法不需要创建 for 循环。可能吗?

标签: pythondictionarylist-comprehension

解决方案


“Pythonic”方式是使用collections.Counter,但您仍然需要列表理解或map更改大小写:

>>> from collections import Counter
>>> car = ['Ram', 'Ford', "Jeep", 'Jeep', 'ram']
>>> Counter(car)
Counter({'Jeep': 2, 'Ram': 1, 'Ford': 1, 'ram': 1})
>>> Counter([x.upper() for x in car])
Counter({'RAM': 2, 'JEEP': 2, 'FORD': 1})
>>> Counter(map(str.upper,car))
Counter({'RAM': 2, 'JEEP': 2, 'FORD': 1})

推荐阅读