提供列表:
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
我不知道如何继续
答案 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