字典的python理解循环

2024-09-29 21:47:50 发布

您现在位置:Python中文网/ 问答频道 /正文

初学者问题。你知道吗

我有一本这样的字典:

tadas = {'tadas':{'one':True,'two':2}, 'john':{'one':True,'two':True}}

我想计算key为“one”的真值。我应该如何修改我的代码?你知道吗

sum(x == True for y in tadas.values() for x in y.values() )

Tags: key代码intruefor字典johnone
3条回答

可以使用filter筛选“one”未映射为True的任何值的列表。然后,返回列表的长度。你知道吗

len(filter(lambda x: tadas[x]['one'], tadas))

仅访问一个属性:

sum(item['one'] for item in tadas.values())

这利用了这样一个事实:True等于1False等于0。你知道吗

如果不是每个项都包含键'one',则应使用.get方法:

sum(item.get('one', 0) for item in tadas.values())

.get如果dict不包含第一个参数,则返回第二个参数。你知道吗

如果'one'也可以指向数字,您应该明确地测试is True

sum(item.get('one', 0) is True for item in tadas.values())

如果不想在布尔值中隐藏求和,可以更明确地使用:

sum(1 if item.get('one', False) is True else 0 for item in tadas.values())

列表可以计算值的出现次数,因此使用它可能是最惯用的方法:

[x.get('one') for x in tadas.values()].count(True)

相关问题 更多 >

    热门问题