對于如下所述的示例 json
JSON =[{
"ID": "00300000-0000-0000-0000-000000000000",
"CommonTags": [
"Sports"
],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Sports,Arts",
"Title": "Biodata",
"index": 1,
"Value": "Availabity"
},
{
"ID": "00300000-0000-0000-0000-000000000000",
"CommonTags": [
"Social Media"
],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Sports,Arts",
"Title": "Biodata",
"index": 5,
"Value": "Availabity"
},
{
"ID": "00300000-0000-0000-0000-000000000079",
"CommonTags": [
"Sports"
],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Environmental Science",
"Title": "Biodata",
"index": 1,
"Value": "Performace"
}
]
我想根據物件的“值”欄位是否相同來合并 Json 欄位 CommonTags 和索引。
我的方法
mergedArr=[]
def mergeCommon(value):
for i, d in enumerate(mergedArr):
if d['Value'] == value:
return i
return -1
for d in JSON:
if (i := mergeCommon(d['Value'])) < 0:
mergedArr.append(d)
else:
mergedArr[i]['CommonTags'].append(d['CommonTags'])
print(mergedArr)
我將公共欄位輸出作為串列中的串列,但預期的輸出是將所有元素放在單個串列中,我不清楚如何在串列中附加索引值
我的輸出
[{
"ID": "00300000-0000-0000-0000-000000000000",
"CommonTags": ["Sports", ["Social Media"]],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Sports,Arts",
"Title": "Biodata",
"index": 1,
"Value": "Availabity"
}, {
"ID": "00300000-0000-0000-0000-000000000079",
"CommonTags": ["Sports"],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Environmental Science",
"Title": "Biodata",
"index": 1,
"Value": "Performace"
}]
預期輸出
[{
"ID": "00300000-0000-0000-0000-000000000000",
"CommonTags": ["Sports", "Social Media"],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Sports,Arts",
"Title": "Biodata",
"index": [1, 5],
"Value": "Availabity"
}, {
"ID": "00300000-0000-0000-0000-000000000079",
"CommonTags": ["Sports"],
"subID": "149f43d0-6fa9-44f3-b4ba-6fb7a320d0a4",
"Description": "Environmental Science",
"Title": "Biodata",
"index": 1,
"Value": "Performace"
}]
請指導我。謝謝
uj5u.com熱心網友回復:
代替
mergedArr[i]['CommonTags'].append(d['CommonTags'])
和
mergedArr[i]['CommonTags'].extend(d['CommonTags'])
if not isinstance(mergedArr[i]['index'], list):
mergedArr[i]['index'] = [mergedArr[i]['index']]
mergedArr[i]['index'].append(d['index'])
那么您的代碼將產生所需的結果。
list.extend 將允許您擴展“CommonTags”值,而不是向其附加新串列。
另一個丑陋的 if 條件將創建一個串列,如果mergedArr[i]['index']它還不是一個串列并附加到它上面。
uj5u.com熱心網友回復:
將第二個附加更改為擴展將解決問題,即 mergedArr[i]['CommonTags'].extend(d['CommonTags']). 擴展現有陣列是您想要的,而不是在末尾附加一個新陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/416644.html
標籤:
