python - 在不使用 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 循环。可能吗?
解决方案
“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})
推荐阅读
- android - 循环显示动画在第一次通话中不起作用
- javascript - 'createConsumer' 不是由 node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js 导出的
- c++ - C++ 输出对齐
- python - 如何获取非空值的百分比?
- c# - MongoDB .net 驱动程序 - 获取 MongoDB 服务器版本
- networking - 不用ip访问树莓派
- paypal - PayPal API 返回 RESOURCE_NOT_FOUND / INVALID_RESOURCE_ID 但交易列在 Sandbox Business 帐户中
- java - JsperReport 在 JavaFx 中不显示任何数据
- ios - 从 App Delegate 推送标签栏控制器
- python - 如何通过它的api在discord频道中发送消息