这里的问题很快。我有这样的字典(有更多条目):
champlist = {
"Aatrox": {
"id": 266,
"title": "the Darkin Blade",
"name": "Aatrox",
"key": "Aatrox"
},
"Thresh": {
"id": 412,
"title": "the Chain Warden",
"name": "Thresh",
"key": "Thresh"
}
}
我喜欢读所有的id。我正在尝试这样
for champ in champlist:
print(champ['id'])
但它说:
print(champ['id'])
TypeError: string indices must be integers
它不会将每个“冠军”选为字典,而是作为字符串,对此有何帮助?谢谢!
答案 0 :(得分:1)
试试这个:
Variable = champlist['Thresh']['id']
要迭代:使用词典的iterkeys()
,itervalues()
或iteritems()
方法。
查看docs更多信息。 :)
答案 1 :(得分:0)
你不能像那样迭代字典。尝试迭代值:
for champ in champlist.values():
print(champ['id'])
为了完整性,只需按键:
for key in champlist.keys():
print(key)
或者如果您需要键值组合:
for key, val in champlist.items():
print('%s - %s', key, val)
还有相同的itervalues
,iterkeys
和iteritems
方法返回迭代器而不是列表(更适合大型objs)
答案 2 :(得分:0)
试试这个:
print [v['id'] for (k, v) in champlist.iteritems()]