在for循环中迭代时,如果项目的值为1
,我会尝试将字典项的键附加到列表中。
我拥有的是:
peeps = {'scoobydoo':0, 'shaggy':0, 'scrappydoo':0, 'velma':1, 'freddy':0, 'daphne':1}
ignore_list = []
for peep in peeps:
if peep == 1:
ignore_list.append(peep)
print(ignore_list)
然而,这并不能满足我的期望:
['velma', 'daphne']
打印一个空列表:
[]
答案 0 :(得分:4)
您没有检查值,仅针对密钥本身。
通过访问它来检查值:
for peep in peeps:
if peeps[peep] == 1:
ignore_list.append(peep)
或将键和值一起循环:
for peep, peep_value in peeps.items():
if peep_value == 1:
ignore_list.append(peep)
您可以使用列表推导在一个步骤中构建列表:
ignore_list = [peep for peep, peep_value in peeps.items() if peep_value == 1]
答案 1 :(得分:1)
你是在迭代键而不是值。因此,您需要将密钥与实际字典组合以检查该对应密钥的值是否等于1。
peeps = {'scoobydoo':0, 'shaggy':0, 'scrappydoo':0, 'velma':1, 'freddy':0, 'daphne':1}
ignore_list = []
for peep in peeps:
if peeps[peep] == 1:
ignore_list.append(peep)
print(ignore_list)
OR
peeps = {'scoobydoo':0, 'shaggy':0, 'scrappydoo':0, 'velma':1, 'freddy':0, 'daphne':1}
print([key for key,value in peeps.items() if value == 1])
答案 2 :(得分:0)
您可以遍历字典的键和值来完成您想要的任务:
peeps = {'scoobydoo':0, 'shaggy':0, 'scrappydoo':0, 'velma':1, 'freddy':0, 'daphne':1}
ignore_list = []
for key, value in peeps.items():
if value == 1:
ignore_list.append(key)
print(ignore_list)