【发布时间】:2017-04-20 14:57:07
【问题描述】:
给定一个字典(db)和字符串(类型),我的函数需要搜索整个字典并找到所有以字符串(类型)为唯一类型的项目,找到所有类型为 1/2 的项目它们的类型,并将两个值相加。然后它必须返回统计数据的元组。
我不知道如何跟踪计数器,并且函数返回不正确的元组。我认为我的结构可能是健全的,但我知道它不能正常工作。我怎样才能解决这个问题?什么可以帮助我跟踪柜台? if 语句检查不正确是我的问题吗?
这是我当前的代码:
def count_by_type(db,type):
only_type=0
half_type=0
for key, values in db.item():
if type in values[1] or values[2]:
half_type+=1
if type in (values[1] or values[2]) and (values[1] or values[2]==None:)
only_type+=1
my_sum=half_type+ only_type
return (only_type, half_type, my_sum)
这是预期输入/输出的示例:
db={'bulb':(1,'Grass','poison', 1, False),
'Char':(4, 'poison','none', 1, False)}
types='poison'
'char' has poison as its only type, only_type+=1
'bulb' has poison as 1/2 of its types, half_type +=1
my_sum=2
return: (1,1,2)
【问题讨论】:
-
for key, values in db.item():那不可能。这是items() -
还有
if type in values[1] or values[2]::你不想写那个。这可能是你的问题:if type in values[1] or type in values[2]: -
我将值写为 or 因为没有一个可能是其中一种类型,但它也可能不是,我不知道如何检查它。 @Jean-FrançoisFabre
-
不是一个解决方案,但值得一提的是,使用切片进行比较,将
in与or配对使用会更有意义并节省一些宽度 -
切片如何?我理解 in 和 or,但我应该如何切片呢?
标签: python python-3.x dictionary counter