在字典中查找给定值的键,其中值可以是列表

时间:2018-03-15 15:21:23

标签: python dictionary key

我想识别字典的一个键,如果值中包含某个值,它本身可以是一个列表。我测试了以下代码:

   h={"Hi":[1,2],"du":3}

for book, product in h.items():
    if 1 in product:
               print(book)

它给了我错误

 if 1 in product:

TypeError: argument of type 'int' is not iterable

不能弄清楚这里有什么问题。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

您应首先检查它是否为list

if isinstance(product, list) and 1 in product:

答案 1 :(得分:2)

问题是,在其中一次迭代中,特别是当book"du"时,product3,这是int,而非list,因此不可迭代。您应首先检查product是否为列表。如果是,检查是否有1;如果不是,请检查它是否等于1.

h={"Hi":[1,2],"du":3,"nn":1}
for book, product in h.items():
    if (isinstance(product, list) and 1 in product) or product == 1:
        print(book)  # prints both "Hi" and "nn"

答案 2 :(得分:1)

您收到错误,因为3"du"的值)不是列表。

只需添加一个检查项是否确实是类型列表的实例:

h={"Hi":[1,2],"du":3}

for book, product in h.items():
    if isinstance(product, list):
        if 1 in product:
            print(book)