1. ホーム
  2. python

[解決済み] python辞書エラー AttributeError: 'list' オブジェクトには 'keys' という属性がありません。

2022-01-31 01:36:26

質問

この行でエラーになります。インポートしたファイルから辞書を操作しています。これがその辞書です。

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" は "users" になるのですが、辞書が私をそのように認識しないというエラーが出ています。どなたか、私が辞書で間違っているのか教えていただけませんか?

どうすればいいですか?

おそらく、このようなことをお考えではないでしょうか。

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'