一覧

2016-04-26 15 views
3

のPython v3.4.3一覧

dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}] 

と変数k

k = 'Frodo' 

タスクからリストをasignするexpresionを書くことですキーが存在しない辞書は、「存在しない」と表示されなければならず、すべての問題は1行で解決されなければならない。私は、望ましい出力を与える行を書かれている

for kk in dlist : kk[k] if k in kk else 'NOT PRESENT' 

出力:

'Elijah' 
'NOT PRESENT' 

が、問題は、私は、変数

res = list(for kk in dlist : kk[k] if k in kk else 'NOT PRESENT') 
に、この出力を割り当てることができないということです

または

res = [for kk in dlist : kk[k] if k in kk else 'NOT PRESENT'] 

EDIT:すべての辞書キー

res = [x[k] for x in dlist] 

を希望しているが、dictionarylistでKKのためと辞書

で「キー」場合、私は、[キー] 辞書を組み合わせカント場合 加えて、これは正しい割り当てを与えます

abhinsitがこの質問に答え、私にいくつかの洞察力を与えた後、私はそれを解決しました。

output = [item[k] if k in item else 'NOT PRESENT' for item in dlist] 

私の主な問題は、elseステートメントの正しい位置でした。

+0

簡単に言うと、それはあなたが探している理解のための適切な構文ではありません。リンクされた複製を参照してください。 – TigerhawkT3

+0

期待される結果を提示した場合(印刷時の出力ではなく)、あなたの質問はより明確になります。また、タイトルから「Python343」を削除してください。これは別のタグのためです。 –

+0

また、 'kk.get(k、 'PRESENT')'をチェックアウトしてください。 – TigerhawkT3

答えて

2
>>> dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}] 
>>> required_key = 'Frodo' 
>>> output = [item.get(required_key,'NOT PRESENT')for item in dlist] 
>>> output 
['Elijah', 'NOT PRESENT'] 
>>> 
+0

あなたの答えはTyですが、望ましい結果が得られますが、同じタスクはitem.getを使わなければ実行できません。 – Justas

+0

はい辞書の値を取得/確認する方法はさまざまですが、どのように実装するかによって異なります。あなたはgetの代わりにifを書いたかもしれません – abhinsit

+0

はい私の問題は他には必須であり、他のものは必須ではありません。 item dlistのitemに対して 'not presentes' – Justas