从列表中计算字典中的单词数

时间:2018-11-20 17:37:34

标签: python list dictionary

提供列表:

lst = ['apple', 'orange', 'pears', 'pears', 'banana']

和字典

dict = {'orange': 4, 'apple':2, 'pears': 1}

如果dict中已存在列表中的字符串,则更新值,否则添加新键及其计数。

结果:

dict = {'orange' = 5, 'apple':3, 'pears':3, 'banana':1}

我尝试过:

count = 0
for string on lst:
    if string in dict.keys():
        for num in dict:
            count = count + num
            num = count

我不知道如何继续

4 个答案:

答案 0 :(得分:1)

您可以使用from collections import Counter >>> lst = ['apple', 'orange', 'pears', 'pears', 'banana'] >>> d = {'orange': 4, 'apple':2, 'pears': 1} >>> count = Counter(d) >>> count Counter({'orange': 4, 'apple': 2, 'pears': 1}) >>> count += Counter(lst) >>> count Counter({'orange': 5, 'pears': 3, 'apple': 3, 'banana': 1})

{{1}}

答案 1 :(得分:1)

这可以通过简单的列表循环和dict.get方法轻松完成,尽管存在其他有效的方法。

lst = ['apple', 'orange', 'pears', 'pears', 'banana']
dict = {'orange': 4, 'apple':2, 'pears': 1}

for st in lst:
     dict[st] = dict.get(st,0)+1

dict
{'orange': 5, 'apple': 3, 'pears': 3, 'banana': 1}

答案 2 :(得分:1)

您的答案几乎是正确的:

for string in lst:
    if string in dict.keys():
        dict[string] += 1
    else:
        dict[string] = 1

这是假设您尚未看到的字符串以值1开头,对于您的输出来说似乎是这种情况。

您还可以删除.keys(),因为python会自动在键中检查您要循环播放的值,因此:

for string in lst:
    if string in dict:
        dict[string] += 1
    else:
        dict[string] = 1

答案 3 :(得分:0)

在扩展之前,第2行有一个错字,应该是列表中字符串的错字。

这是我建议的解决方案。当您遍历列表时,请检查每个条目以查看它是否是字典中的键(如已完成)。如果是,那么dict [string]将是与该键配对的数字值,您可以将其添加一个。如果不是,则可以将字符串添加为值为1的新键。

# original data
lst = ['apple', 'orange', 'pears', 'pears', 'banana']  
dict = {'orange': 4, 'apple':2, 'pears': 1}

# iterate through lst and add 1 to each corresponding key value
for string in lst:
    if string in dict.keys():
        #  increment count for a found key 
        #  which can be accessed in dict[string] - no need for num
        count = int(dict[string])
        dict[string] = count + 1
    else:
        # add new key and a count of 1 to dict
        dict[string] = 1