python - 在python 3中使用字典计算列表中的字符串
问题描述
我有一个只有字符串的列表列表,我必须创建一个字典,其中字符串作为键,它们在列表列表中的计数作为值。应该是这样的:
[[‘dolphin’, ‘bomb’, ‘spider’], [‘eye’, ‘bomb’, ‘fire’],
[‘spider’, ‘fire’, ‘lock’], [‘bomb’, ‘lock’, ‘tree’]]
并且输出应该与不同行中的每个键一起使用:
dolphin 1
bomb 3
spider 2
eye 1
fire 2
lock 2
tree 1
这是我的代码:
dic_count={}
count=1
def print_symbols_counts(deck):
for i in range(len(deck)-1):
for j in deck[i]:
if j in deck[i+1]:
dic_count[j]=count+1
else:
dic_count[j]=count
return dic_count
但我无法得到正确的输出(这是我的输出):
{'dolphin': 1, 'bomb': 1, 'spider': 1, 'eye': 1, 'fire': 1, 'lock': 2}
谢谢你:)
解决方案
您可以展平列表,然后使用Collections.Counter
:
from collections import Counter
flat_list = [item for sublist in lst for item in sublist]
result = Counter(flat_list)
请参阅如何从列表列表中制作平面列表?以及如何计算列表项的出现次数?.
编辑:由于不允许使用 OP Counter
:
flat_list = [item for sublist in lst for item in sublist]
result = dict((x, flat_list.count(x)) for x in set(flat_list))
推荐阅读
- python - 如何使用python删除图像中图形周围的白色边框/边缘?
- python - 如何在 Python 中打开 .txt 文件进行数据存储?
- javascript - 如何重置我的许多选择框值?
- android - 删除或销毁当前活动之外的所有活动
- kubernetes - OpenEBS cstore 卷在删除和覆盖时非常慢
- kotlin - 每当 Recyclerview 行中的文本在 Kotlin 中更改时,是否有办法更改 MainActivity 中的 textview 文本
- python - 如果这些元素位于两个空格之间,则连接列表的元素
- javascript - ajax code200错误无法连接到url
- pyspark - 有效地计算 PySpark GroupedData 上的前 k 个元素(不是 scala)
- json - 如何使用存储在不同数据类型的变量中的数据创建 json 对象