【问题标题】:Looping a list returning a value in dict循环列表返回字典中的值
【发布时间】:2013-06-09 00:36:17
【问题描述】:

我正在尝试从列表中读取并在字典中返回相应的值。 请帮助我哪里出错了。 谢谢

DICT = {"b": "21", "g": "54", "f": "121", "t": "1", "j": "33"}
n = ['b', 'w', 'f']

for keys in n:
    if keys in n:
        if n == DICT.keys():
            print(DICT.values())
        else:
            if keys not in n:
                print('Not Available')

【问题讨论】:

  • 运行此程序时遇到什么错误?
  • 出了什么问题?你得到错误的输出吗?有错误吗?
  • 看起来你的身份全乱了,还是只是 SO 格式?
  • for keys in n: if keys in n: 似乎是错误的。您正在迭代 n 中的键,因此检查每个单独的键是否在 n 中充其量是多余的。

标签: python list loops dictionary


【解决方案1】:
for key in n:
    if key in dict.keys():
        print(dict[key])

看来这就是你想要做的事情

【讨论】:

  • 在您的代码中,您在所有字典键的列表中执行 O(n) 查找,以查看该键是否在字典中。
【解决方案2】:

如果你使用 get() 方法,这会容易得多:

DICT = {"b": "21", "g": "54", "f": "121", "t": "1", "j": "33"}
n = ['b', 'w', 'f']


for key in n:
    if DICT.get(key):
        print(DICT[key])
    else:
        print("Not available")

它产生了以下输出:

21
不可用
121

【讨论】:

    【解决方案3】:

    您正在遍历 n 的所有元素,但要检查 n 是否是每个循环的字典的所有键,它不会是。尝试这样做:

    for key in n:
        if key in DICT:
            print(DICT[key])
        else:
            print('not available')
    

    【讨论】:

      【解决方案4】:
      >>>for keys in n:
             if keys in DICT.keys():
                 print DICT[keys]
             else:
                 print ('Not Available')
      
      21
      Not Available
      121
      

      【讨论】:

        【解决方案5】:

        如果你使用get就很简单

        for k in n:
            print(DICT.get(k, 'Not Available'))
        

        【讨论】:

          【解决方案6】:
          print '\n'.join((DICT[key] for key in n if key in DICT))
          

          【讨论】:

            猜你喜欢
            • 2015-01-23
            • 2014-09-29
            • 1970-01-01
            • 2021-01-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-11-15
            相关资源
            最近更新 更多