首页 > 解决方案 > 在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}

谢谢你:)

标签: pythonarrayslistdictionary

解决方案


您可以展平列表,然后使用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))

推荐阅读