假设我有一个像这样的词典列表:
dictionList = {1: {'Type': 'Cat', 'Legs': 4},
2: {'Type': 'Dog', 'Legs': 4},
3: {'Type': 'Bird', 'Legs': 2}}
使用for循环我想遍历列表,直到我找到Type
字段等于"Dog"
的字典。
我最好的尝试是:
for i in dictionList:
if dictionList(i['Type']) == "Dog":
print "Found dog!"
但是这给我带来了以下错误:
TypeError: 'int' object has no attribute '__getitem__'
有关如何正确执行此操作的任何想法?
答案 0 :(得分:9)
将values
迭代器用于词典:
for v in dictionList.values():
if v['Type']=='Dog':
print "Found a dog!"
编辑:我会说你在原来的问题中要求检查词典中Type
的值,这有点误导。您要求的是名为“类型”的值的内容。这可能与理解你想要的东西有微妙的区别,但在编程方面它是一个相当大的差异。
在Python中,你应该只需要输入任何东西。
答案 1 :(得分:3)
使用itervalues()检查字典词典。
for val in dictionList.itervalues():
if val['Type'] == 'Dog':
print 'Dog Found'
print val
给出:
Dog Found
{'Legs': 4, 'Type': 'Dog'}
无需使用iter
/ iteritems
,只需检查值。
答案 2 :(得分:1)
>>> diction_list = {1: {'Type': 'Cat', 'Legs': 4},
2: {'Type': 'Dog', 'Legs': 4},
3: {'Type': 'Bird', 'Legs': 2}}
>>> any(d['Type'] == 'Dog' for d in diction_list.values())
True
答案 3 :(得分:1)
尝试
for i in dictionList.itervalues():
if i['Type'] == "Dog":
print "Found dog!"
问题在于,在您的示例中,i
是整数键。使用itervalues,您可以获取键的值(也就是您想要解析的词典)。
答案 4 :(得分:1)
我认为你只是使用了错误的语法...试试这个:
>>> a = {1: {"Type": "Cat", "Legs": 4}, 2: {"Type": "Dog", "Legs": 4}, 3: {"Type": "Bird", "Legs": 2}}
>>> for item in a:
... if a[item].get("Type") == "Dog":
... print "Got it"
答案 5 :(得分:0)
尝试打印出i
的值。它们不是你认为的那样。这样做的方法是:
for key, val in dictionList.items():
#do stuff to val
答案 6 :(得分:0)
通过键进行访问在字典中更可取。在你的情况下,两个字典对象。
for i in dictionList.keys():
if dictionList[i]['Type'] == 'Dog':
print i