根据键

时间:2015-04-24 13:52:19

标签: python list loops dictionary append

在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']

打印一个空列表:

[]

3 个答案:

答案 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)