第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 按名稱對包含大量數(shù)組的 JSON 文件進(jìn)行排序

Python 按名稱對包含大量數(shù)組的 JSON 文件進(jìn)行排序

犯罪嫌疑人X 2024-01-24 21:00:42
我有一個 JSON 文件,看起來像這樣,只有一個元素:[    {        "test1": [            {                "checked": [                    "True"                ],                "description": [                    "asdasd"                ],                "fileName": [                    "GT-002"                ],                "imgLoc": [                    "/Images/GT-002.png"                ],                "material": [                    6                ],                "quantity": [                    1                ]            }        ]    }]我需要某種方法來對我的大型 JSON 文件進(jìn)行排序fileName?,F(xiàn)在它所做的一切都很奇怪和隨機(jī),對我來說沒有任何作用。test1并test具有相同數(shù)量的項(xiàng)目,但NON_BATCH例如有更多的項(xiàng)目,并且當(dāng)它們分開時我找不到任何方法對它們進(jìn)行正確排序。我嘗試過以下代碼:import jsonData_JSON = 'data.json'BATCH_NAME = 'NON_BATCH'with open(Data_JSON) as file:    Data_JSON_Contents = json.load(file)    sortedList = sorted(Data_JSON_Contents, key=lambda i: i[BATCH_NAME][0]['fileName'])    with open(Data_JSON, mode='w+', encoding='utf-8') as file:        json.dump(sortedList, file, ensure_ascii=True, indent=4, sort_keys=True)如果有人知道任何工具或庫或執(zhí)行此操作的正確方法,我真的很感激,我已經(jīng)嘗試過natsort以下方法:from natsort import natsort_keygennatsort_key = natsort_keygen()Data_JSON_Contents[0][BATCH_NAME][0].sort(key=natsort_key)或者類似的東西,但對我來說沒有任何作用。
查看完整描述

1 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個贊

我設(shè)法將所有內(nèi)容合并到一個元組中,然后使用 對其進(jìn)行排序natsort,然后將其“縫合”在一起,從而成功地縫合了一個解決方案。


這是代碼:


import json

from natsort import natsort_keygen

natsort_key = natsort_keygen()


Data_JSON = 'data.json'

BATCH_NAME = 'NON_BATCH'


file_names = []

image_locations = []

quantities = []

description = []

checkmarked = []

materials = []


def merge(*args):

    return [(args[0][i], args[1][i], args[2][i], args[3][i], args[4][i], args[5][i]) for i in range(len(args[0]))]


with open(Data_JSON) as file:

    Data_JSON_Contents = json.load(file)


    for item in Data_JSON_Contents[0][BATCH_NAME]:

        file_names.append(item['fileName'][0])

        image_locations.append(item['imgLoc'][0])

        quantities.append(item['quantity'][0])

        description.append(item['description'][0])

        checkmarked.append(item['checked'][0])

        materials.append(item['material'][0])


    merged = sorted(merge(file_names, image_locations, quantities,

                          description, checkmarked, materials), key=natsort_key)


    for i, j in enumerate(file_names):

        Data_JSON_Contents[0][BATCH_NAME].pop(0)

        Data_JSON_Contents[0][BATCH_NAME].append({

            'fileName': [merged[i][0]],

            'imgLoc': [merged[i][1]],

            'quantity': [int(merged[i][2])],

            'description': [merged[i][3]],

            'checked': [merged[i][4]],

            'material': [merged[i][5]]

        })

    with open(Data_JSON, mode='w+', encoding='utf-8') as file:

        json.dump(Data_JSON_Contents, file,

                  ensure_ascii=True, indent=4)



無論如何,它都不是簡潔的代碼,也不是經(jīng)過優(yōu)化的,但它是有效的,如果有人有一些建議可以讓它變得更好、更“時尚”,我會非常樂意使用它。



查看完整回答
反對 回復(fù) 2024-01-24
  • 1 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號