2017-11-07 14 views
-3

2番目のリストが不規則であるネストされたリスト(dictのリストのリスト)があります。私は配列内の特定のキーのすべての値を取得したい。各行の不規則なネストされたリストから値を取得する

リスト:

[{'0.1':1},{'0.2':2},{'0.3':3}] 

[{'0.2':2},{'0.3':3},{'0.4':4},{'0.5':5}] 

[{'0.1':1},{'0.2':2}] 

[{'0.5':5}] 

I 'が0.5' キーのすべての値は、配列に格納されたいです。あなたはこれを試すことができ

[record[i]['0.5'] for i in record] 

-->TypeError: list indices must be integers, not list 

    for d in record.values(): 
     print(d['0.5']) 

-->AttributeError: 'list' object has no attribute 'values' 
+2

変数名として 'list'を使用しないでください。 – Arman

+0

質問の本文を編集してここで変数名を変更するのはなぜですか? – Arman

+0

これらの値を印刷したいだけですか?それともリストに入れたいですか?リストが必要な場合は、フラットなリストだけが必要ですか?または、元のリストに対応するリストのリストが必要ですか? –

答えて

0

:私は複数のバージョンを試してみました

s = [[{'0.1':1},{'0.2':2},{'0.3':3}], [{'0.2':2},{'0.3':3},{'0.4':4},{'0.5':5}], [{'0.1':1},{'0.2':2}], [{'0.5':5}]] 
new_vals = [c[0] for c in [[b["0.5"] for b in i if "0.5" in b] for i in s] if c] 

出力:

[5, 5] 
+0

完璧な、これは働いた。だから私はこの正しいことを理解するならば、sは完全なリストであり、cはリストのリストであり、bはdictの各キーと値を含んでいる。 –

+0

@ThomasStarkが正しい。助けてうれしい! – Ajax1234

0

これを行うための簡単な方法は、リストの内包に二重ループです。

record = [ 
    [{'0.1': 1}, {'0.2': 2}, {'0.3': 3}], 
    [{'0.2': 2}, {'0.3': 3}, {'0.4': 4}, {'0.5': 5}], 
    [{'0.1': 1}, {'0.2': 2}], 
    [{'0.5': 5}], 
] 

output = [d['0.5'] for row in record for d in row if '0.5' in d] 
print(output) 

出力

[5, 5] 
関連する問題