簡體   English   中英

使用 python 3 中的字典計算列表中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM