Python在列表中的dict值中计数项目

Python 3.3,具有这种形式的键值对的字典。

d = {'T1': ['eggs', 'bacon', 'sausage']}

这些值是可变长度的列表,我需要遍历列表项。这有效:

count = 0
for l in d.values():
   for i in l: count += 1

但这很丑。必须有一种更Python化的方式,但是我似乎找不到。

len(d.values())

产生1。这是1个列表(DUH)。从此处尝试使用Counter会产生“无法散列的类型”错误。


猛跑小猪
浏览 234回答 3
3回答

Qyouu

sum()每个字典值的使用和长度:count = sum(len(v) for v in d.itervalues())如果您使用的是Python 3,则只需使用即可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一个Counter不会帮助你在这里多,你是不是创建每个条目的计数,你计算所有的值的总长度。

FFIVE

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

慕森王

在Treehouse上做作业时,我想到了这一点。至少(我知道)可以通过一个步骤使它变得更简单,但是对于初学者(如我自己)来说,理解此版本可能会更容易。dict = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['bread', 'butter', 'tosti']}total = 0for value in dict:    value_list = dict[value]    count = len(value_list)    total += countprint(total)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python