TypeError:' int'尝试迭代字典

时间:2017-09-01 03:36:10

标签: python loops dictionary iteration typeerror

我对python有些新意,我一直试图找到一种方法来迭代一个字典,其密钥如下:

r_alpha: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'}

让我们假设以下内容: 我有一个列表,我想找到列表的值是否在字典键中并打印该键的值但是会发生这种情况:

th = [1,2,3]
for item in th:
for keys, values in r_alpha.items():
        if item in keys:
            print(values)

我收到以下错误,指向第4行(如果键中的项目:) TypeError:类型' int'的参数是不可迭代的

如果我将该列表更改为字符串值,我实际上会得到像这样的字符串值的键:

th = ['a','b','c']
for item in th:
for keys, values in r_alpha.items():
        if item in values:
            print(keys)

打印:1 2 3

有人可以帮助我,告诉我我做错了什么吗?或者我如何迭代字典的int键,以便返回值。

1 个答案:

答案 0 :(得分:3)

错误的原因是因为您在循环中迭代键,并且在每次迭代时使用in运算符将键与其他值进行比较,该运算符用于使用iterables进行成员资格测试。由于你的键是整数(不是迭代),这显然不起作用。

当支持常量时间查找时,无需迭代字典的键。

for item in th:
    if item in r_alpha:
        print(r_alpha[item])
a
b
c

或者,您可以使用dict.get删除if条件。

for item in th:
    print(r_alpha.get(item))
a
b
c