Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在dict值(即列表)中对项目进行计数_Python_List_Dictionary_Count_Python 3.3 - Fatal编程技术网

Python在dict值(即列表)中对项目进行计数

Python在dict值(即列表)中对项目进行计数,python,list,dictionary,count,python-3.3,Python,List,Dictionary,Count,Python 3.3,Python3.3,一个具有这种形式的键值对的字典 d = {'T1': ['eggs', 'bacon', 'sausage']} 这些值是可变长度的列表,我需要迭代列表项。这项工作: count = 0 for l in d.values(): for i in l: count += 1 但是很难看。一定有更像蟒蛇的方式,但我似乎找不到 len(d.values()) 产生1。这是一个列表(DUH)。尝试使用来自的计数器时会出现“不可损坏类型”错误 使用sum()和每个字典值

Python3.3,一个具有这种形式的键值对的字典

d = {'T1': ['eggs', 'bacon', 'sausage']}
这些值是可变长度的列表,我需要迭代列表项。这项工作:

count = 0
for l in d.values():
   for i in l: count += 1
但是很难看。一定有更像蟒蛇的方式,但我似乎找不到

len(d.values()) 
产生1。这是一个列表(DUH)。尝试使用来自的计数器时会出现“不可损坏类型”错误

使用
sum()
和每个字典值的长度:

count = sum(len(v) for v in d.itervalues())
如果您使用的是Python3,那么只需使用
d.values()

使用您的输入示例和我的示例进行快速演示:

>>> d = {'T1': ['eggs', 'bacon', 'sausage']}
>>> sum(len(v) for v in d.itervalues())
3
>>> d = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['spam', 'ham', 'monty', 'python']}
>>> sum(len(v) for v in d.itervalues())
7

计数器在这里帮不了你什么忙,你不是在创建每个条目的计数,你是在计算所有值的总长度。

当我找到这个主题时,我一直在寻找答案,直到我意识到我的代码中已经有一些东西可以使用它。这就是我想到的:

>>> d = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['spam', 'ham', 'monty', 'python']}
>>> sum(map(len, d.values()))
7
count = 0

for key, values in dictionary.items():
        count = len(values)
如果要保存每个字典项的计数,可以创建一个新字典来保存每个键的计数

count = {}

for key, values in dictionary.items():
        count[key] = len(values)

我无法确切地找到该方法的可用版本,但我认为.items方法仅在Python 3中可用。

在树屋上做作业时,我想到了这个。它至少可以通过一个步骤变得简单(据我所知),但对于初学者(像我一样)来说,可能更容易理解这个版本

dict = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['bread', 'butter', 'tosti']}

total = 0

for value in dict:
    value_list = dict[value]
    count = len(value_list)
    total += count

print(total)

对我来说,最简单的方法是:

winners = {1931: ['Norman Taurog'], 1932: ['Frank Borzage'], 1933: ['Frank Lloyd'], 1934: ['Frank Capra']}

win_count_dict = {}

for k,v in winners.items():
    for winner in v:
        if winner not in win_count_dict:
            win_count_dict[winner]=1
        else:
            win_count_dict[winner]+=1


print("win_count_dict = {}".format(win_count_dict))

您正在重新发明
defaultdict(int)
我是吗?也谢谢你编辑我的文章。可能是因为你不知道它的存在?标准库在
集合
模块中提供了一个组件,您无需检查密钥是否已定义;哈哈哇!看起来更简单,哈哈,我喜欢它!谢谢