【问题标题】:Append a dictionary key to a list depending on the value of the key根据键的值将字典键附加到列表
【发布时间】:2015-07-03 04:00:01
【问题描述】:

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

它打印一个空列表:

[]

【问题讨论】:

  • 谢谢,我正要使用 iteritems() 但 peeps[peep] 很简单而且效果很好,谢谢 Avinash 和 Martijn!

标签: python list loops dictionary append


【解决方案1】:

您正在迭代键而不是值。所以你需要结合key和实际的字典来检查对应的key的值是否等于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)

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】:

    您没有检查 ,只检查键本身。

    通过访问来检查值:

    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]
    

    【讨论】:

    • 我需要查看列表理解的内容。在一行中完成某件事似乎很好。知道有什么好的教程吗?
    • @mdandr:你可以从Python tutorial开始。
    【解决方案3】:

    你可以遍历字典的键和值来完成你想要的:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2020-04-09
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多