python字典错误AttributeError:' list'对象没有属性'键'

时间:2014-04-21 02:50:05

标签: python dictionary

此行有错误。我正在使用导入文件中的字典。这是字典:

users = [{'id':1010,'name':"Administrator",'type':1},{'id':1011,'name':"Administrator2",'type':1}]

工作方法如下:

def addData(dict, entry):
new = {}
x = 0
for i in dict.keys():
    new[i] = entry(x)
    x += 1
dict.append(new)

“dict”将是“用户”,但错误是字典不能识别我。谁能告诉我,我在字典里有错?

2 个答案:

答案 0 :(得分:8)

那不是代名词,它是一本词典列表!
编辑:为了让这更多回答 - 是的:

users = [{'id':1010,'name':"Administrator",'type':1},{'id':1011,'name':"Administrator2",'type':1}]
newusers = dict()
for ud in users:
    newusers[ud.pop('id')] = ud
print newusers
#{1010: {'type': 1, 'name': 'Administrator'}, 1011: {'type': 1, 'name': 'Administrator2'}}
newusers[1012] = {'name': 'John', 'type': 2}
print newusers
#{1010: {'type': 1, 'name': 'Administrator'}, 1011: {'type': 1, 'name': 'Administrator2'}, 1012: {'type': 2, 'name': 'John'}}

这与dawgs答案基本相同,但采用简化方法生成新字典

答案 1 :(得分:8)

也许您希望沿着这些方向做点什么:

users = [{'id':1010,'name':"Administrator",'type':1},{'id':1011,'name':"Administrator2",'type':1}]

new_dict={}

for di in users:
    new_dict[di['id']]={}
    for k in di.keys():
        if k =='id': continue
        new_dict[di['id']][k]=di[k]

print new_dict     
# {1010: {'type': 1, 'name': 'Administrator'}, 1011: {'type': 1, 'name': 'Administrator2'}} 

然后你可以这样做:

>>> new_dict[1010] 
{'type': 1, 'name': 'Administrator'}

基本上,这会将一个匿名词典列表变成一个词典的词典,它是键'id'

的键。