所以我有一个dict,其中包含与列表相对应的键,该列表包含str。我想收集所述列表中的所有相同值并将它们加在一起。也许我的解释令人困惑,所以我举一个例子:
function_name({'key1':['apple', 'orange'], 'key2':['orange', 'pear'})
>>> {'apple':1, 'orange':2, 'pear':1}
我将如何创建此功能?我正在考虑以某种方式制作一个for循环:
count = 0
for fruit in dict_name:
if food == 'apple'
count = count + fruit
我仍然不确定如何设置此格式,尤其是如何计算值并收集它们,在此先感谢您的任何建议!
答案 0 :(得分:7)
您可以取消嵌套字典的值并应用Counter
。
>>> from collections import Counter
>>>
>>> d = {'key1':['apple', 'orange'], 'key2':['orange', 'pear']}
>>> Counter(v for sub in d.values() for v in sub)
Counter({'apple': 1, 'orange': 2, 'pear': 1})
如果您不喜欢嵌套的生成器理解,可以使用itertools.chain.from_iterable
完成取消嵌套。
>>> from itertools import chain
>>> Counter(chain.from_iterable(d.values()))
Counter({'apple': 1, 'orange': 2, 'pear': 1})
没有导入并且带有传统循环,它看起来像这样:
>>> result = {}
>>> for sub in d.values():
...: for v in sub:
...: result[v] = result.get(v, 0) + 1
...:
>>> result
{'apple': 1, 'orange': 2, 'pear': 1}
答案 1 :(得分:2)
类似这样的事情应该可以解决:
>>> from collections import Counter
>>> counts = Counter([item for sublist in your_dict.values() for item in sublist])
答案 2 :(得分:1)
如果您不想导入任何库,则可以执行以下操作:
$('select[name="Deliveryaddress\\.Country"]').change(function() {
$('#deliveryaddress\\.Phone').val(this.value);
})
$('#deliveryaddress\\.Phone').val($('select[name="Deliveryaddress\\.Country"]').val())
您检查该值是否已在创建的字典'foobar'中。如果是,则将其值加一。如果不是,则将值添加为键并将其值定义为1。 :)