为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2021-03-18 14:09:40
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会产生“无法散列的类型”错误。
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

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不会帮助你在这里多,你是不是创建每个条目的计数,你计算所有的值的总长度。


查看完整回答
反对 回复 2021-03-29
?
FFIVE

TA贡献1797条经验 获得超6个赞

>>> d = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['spam', 'ham', 'monty', 'python']}

>>> sum(map(len, d.values()))

7


查看完整回答
反对 回复 2021-03-29
?
慕森王

TA贡献1777条经验 获得超3个赞

在Treehouse上做作业时,我想到了这一点。至少(我知道)可以通过一个步骤使它变得更简单,但是对于初学者(如我自己)来说,理解此版本可能会更容易。


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)


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信