[英]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.