88549


いちおう動作は出来ているのですが、何かもっと簡潔にできる（ループを使わない）方法があれば、知りたいと思っています。

ser_target = ['code', [{'key_1': data_00, 'data_01': 'k_1:data_02'}, {'key_2':
data_10, 'data_11': 'k_2:data_12'},・・・, {'key_n': data_n0, 'data_n1':
'k_n:data_n2'}}]

のような、１つの要素の中に、{}でくくられた、見た目は辞書型のような書式で書かれたデータがカンマ区切りで定義されているデータがあります。  
つまり、{'key_1': data_00, 'data_01': 'k_1:data_02'}, から {'key_n': data_n0,
'data_n1': 'k_n:data_n2'} までが、'code'に対する１要素というデータ。

[code]

    lst_code = [
                    {'key_1': data_00, 'data_01': 'k_1:data_02'},
                    {'key_2': data_10, 'data_11': 'k_2:data_12'},
                    ・・・,
                    {'key_n': data_n0, 'data_n1': 'k_n:data_n2'}
    ]
    
[/code]

というようなに辞書型データを要素とする、リスト変換するにはどうしたらよいでしょうか？

現状は、文字列検索のループでやっています。

[code]

    top = 0
    for i in range(0, len(str_Target)):
        top = str_Target.find('{', top)
        if top < 0:
            break
        end = str_Target.find(r'}', top + 1) + 1
        dict_item = ast.literal_eval(str_Target[top:end])
        lst_result.append(dict_item)
        top = end + 1
    
[/code]


CC BY-SA 4.0
2022-04-28T05:30:15.247
88542
2022-04-28T08:28:22.990
2022-04-28T08:04:16.977
43160
43160
question
python numpy
seriesの１要素の中にカンマ区切りで含まれる多数のdict書式のデータの取り出し方


質問記事の`ser_target =`の定義は、最後の方の閉じ括弧がtypoか何かで正しくなっていません。  
`'k_n:data_n2'}}]`の最後の1つ前の閉じ括弧は`}`ではなく`]`ですね。  
以下のようになるはずです。

[code]

    ser_target = ['code', [{'key_1': data_00, 'data_01': 'k_1:data_02'}, {'key_2': data_10, 'data_11': 'k_2:data_12'}, {'key_n': data_n0, 'data_n1': 'k_n:data_n2'}]]
    
[/code]

辞書データの元の`ser_target`リスト内での位置(index)が決まっている(質問記事で言えば2つ目(indexは1))なら以下で抽出できると思うのですが。

[code]

    lst_code = ser_target[1]
    
[/code]

`ser_target`リストの中にはどのような仕様/順番でどのようなデータが入っているか定義されていますか？

あるいは定義されていなくて、最初に見つかった辞書のリストを取得するといった形であれば、以下のように出来るでしょう。

[code]

    lst_code = []
    for i in range(len(ser_target)):
        value = ser_target[i]
        if type(value) is not list:
            continue
        element = value[0]
        if type(element) is not dict:
            continue
        lst_code = value
        break
    
[/code]


CC BY-SA 4.0
2022-04-28T08:16:17.087
88549
2022-04-28T08:28:22.990
2022-04-28T08:28:22.990
26370
26370
88542
answer