[英]counting strings in list using dictionary in python 3
我有一個只有字符串的列表列表,我必須創建一個字典,其中字符串作為鍵,它們在列表列表中的計數作為值。 應該是這樣的:
[[‘dolphin’, ‘bomb’, ‘spider’], [‘eye’, ‘bomb’, ‘fire’],
[‘spider’, ‘fire’, ‘lock’], [‘bomb’, ‘lock’, ‘tree’]]
並且 output 應該與不同行中的每個鍵一起使用:
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
但我無法得到正確的 output (這是我的輸出):
{'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))
llist2 = [["bomb", "bomb", "spider"], ["eye", "bomb", "fire","spider"], ["bomb", "lock", "tree","fire"]]
dictionary = {}
for i in llist2:
for k in i:
if k not in dictionary:
dictionary[k]=1
else:
dictionary[k]+=1
#output
{'bomb': 4, 'spider': 2, 'eye': 1, 'fire': 2, 'lock': 1, 'tree': 1}
這應該可以完成這項工作。
代碼遍歷llist2
中的每個列表,然后對於每個列表,它檢查其元素是否已經是dictionary
中的key
。 如果沒有,它創建密鑰並分配給它 1。如果已經在,它增加計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.