簡體   English   中英

將 arrays 的列表合並到單個數組中

[英]Merge List of arrays into single array

我有幾個 json 文件,我想根據字段編號在其中合並 arrays 並寫入單個 json 文件。 我想在 python 中執行此操作。 有人可以在這里幫助我嗎? 下面提供了示例輸入和 output。

文件 1:

{"Field_number":1086752,"Activity_code":2,"Activity_list_number":6263950}
{"Field_number":1086752,"Activity_code":2,"Activity_list_number":6263951}
{"Field_number":1086754,"Activity_code":2,"Activity_list_number":6263950}
{"Field_number":1086754,"Activity_code":2,"Activity_list_number":6263951}

文件 2:

{"ListFieldActivityConnect":[{"Field_number":1086752,"Activity_code":13}]}
{"ListFieldActivityConnect":[{"Field_number":1086752,"Activity_code":14}]}
{"ListFieldActivityConnect":[{"Field_number":1086754,"Activity_code":1}]}
{"ListFieldActivityConnect":[{"Field_number":1086754,"Activity_code":3}]}

最終 Output:

{{"Field_number":1086752,"Activity_code":2,"Activity_list_number":6263950}, {"Field_number":1086752,"Activity_code":2,"Activity_list_number":6263951},{"Field_number":1086752,"Activity_code":13},{"Field_number":1086752,"Activity_code":14}}

{{"Field_number":1086754,"Activity_code":2,"Activity_list_number":6263950}, {"Field_number":1086754,"Activity_code":2,"Activity_list_number":6263951},{"Field_number":1086754,"Activity_code":1},{"Field_number":1086754,"Activity_code":3}}

問候, PK

導入 itertools 我們稍后會用到

import itertools

數據:

file1 = 
[{"Field_number":1086752,"Activity_code":2,"Activity_list_number":6263950},
 {"Field_number":1086752,"Activity_code":2,"Activity_list_number":6263951},
 {"Field_number":1086754,"Activity_code":2,"Activity_list_number":6263950},
 {"Field_number":1086754,"Activity_code":2,"Activity_list_number":6263951}]


file2 = [{"ListFieldActivityConnect":[{"Field_number":1086752,"Activity_code":13}]},
         {"ListFieldActivityConnect":[{"Field_number":1086752,"Activity_code":14}]},
         {"ListFieldActivityConnect":[{"Field_number":1086754,"Activity_code":1}]},
         {"ListFieldActivityConnect":[{"Field_number":1086754,"Activity_code":3}]}]`

首先,去掉 file2 中的 'ListFieldActivityConnect' 鍵以獲取我們想要的子字段列表。

file2 = [val['ListFieldActivityConnect'] for val in file2]

我們將填寫一個字典,其中每個鍵是“Field_number”,每個值是具有相應“Field_number”的條目列表。

output_dict = dict()

迭代這兩個數據集的組合並填充 output 字典。 請注意,我在 file2 上使用 itertools,因為它是一個列表列表,我想將其展平。

for entry in list(itertools.chain.from_iterable(file2)) + file1:
    field_number = str(entry['Field_number'])
    if field_number not in output_dict:
        output_dict[field_number] = [entry]
    else:
        output_dict[field_number].append(entry)


print(list(output_dict.values()))

結果是:

[[{'Field_number': 1086752, 'Activity_code': 13}, {'Field_number': 1086752, 'Activity_code': 14}, {'Field_number': 1086752, 'Activity_code': 2, 'Activity_list_number': 6263950}, {'Field_number': 1086752, 'Activity_code': 2, 'Activity_list_number': 6263951}], 
 [{'Field_number': 1086754, 'Activity_code': 1}, {'Field_number': 1086754, 'Activity_code': 3}, {'Field_number': 1086754, 'Activity_code': 2, 'Activity_list_number': 6263950}, {'Field_number': 1086754, 'Activity_code': 2, 'Activity_list_number': 6263951}]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM