我想识别字典的一个键,如果值中包含某个值,它本身可以是一个列表。我测试了以下代码:
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
不能弄清楚这里有什么问题。谢谢你的帮助。
答案 0 :(得分:2)
您应首先检查它是否为list
:
if isinstance(product, list) and 1 in product:
答案 1 :(得分:2)
问题是,在其中一次迭代中,特别是当book
为"du"
时,product
为3
,这是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)