2017-08-09 26 views
1

こんにちは私はリストを持つ値を持っており、リストの中に辞書があります下の辞書があります。リストインデックスの代わりにキーを使用してリスト内の辞書値を呼び出す方法はありますか?リスト内の辞書は、インデックス値が常に正しいキー値のペアを提供するとは限りません。しかし、私が鍵を使うことができれば、私はいつも正しい価値を得ることができます。辞書のリスト内のPythonアクセス辞書

mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]} 
print(mylist['mydict'][0]['A']) 

電流出力:

Letter A 

目的のクエリ:現時点では

print(mylist['mydict']['A']) 
Letter A 
+0

なぜディクテーションのdictを使用しないのですか? – bphi

+1

オブジェクトの構造を変更せずに目的のクエリの結果を変更することはできません。現在の構造では、クエリは常にエラーを発生させます。 –

+1

mydicts = {k:dict(v)for k、v} mylist.items()} 'mydicts ['mydict'] ['A']' –

答えて

4

あなたは辞書内のリスト内の三つの辞書を持っています。代わりに以下をお試しください:

mylist = {'mydict': {'A': 'Letter A', 'B': 'Letter C', 'C': 'Letter C'}} 
print(mylist['mydict']['A']) 
+0

これを作成するためにデータをループし、.append({key:value})を使用して辞書でリストを作成しました。私がこのようにフォーマットできるかどうかを見てみましょう。これはおかげです。 – MBasith

+0

その場合、 'mylist = {'mydict':{}}'を初期化し、 'key'と' value'に 'for'ループを使用して' mydist '[key] = value'をつけることができます – Andras

+0

それがトリックでした。どうもありがとうございました! – MBasith

0

あなたの元のデータは次のようにフォーマットされている場合にのみ可能です。そう埋め込まリストなし

mylist = {'mydict': {'A': 'Letter A','B': 'Letter C','C': 'Letter C'}} 

- とにかく意味のある構造を追加していないようですか?あなたはあなたのリスト内の辞書を反復処理し、その後、あなたのAキーを呼び出そう

>>> mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]} 
>>> for dictionary in mylist['mydict']: 
... try: 
... dictionary['A'] 
... except KeyError: 
... pass 
... 
'Letter A' 

1

は、以下のコードを見てみましょう。辞書キーが存在しない可能性があるので、KeyErrorをキャッチします。

1

新しいdictを生成するには、次のコードを試してください。

mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]} 
newDict={} 
for item in mylist['mydict']: 
    newDict.update(item) 
mylist['mydict']=newDict 
print(mylist['mydict']['A']) 
0

ジェネレータの使用はどうですか?

item = next(item['A'] for item in mylist['mydict'] if 'A' in item)