Разделение объекта списка JSON на несколько на основе значений в PythonPython

Программы на Python
Ответить
Anonymous
 Разделение объекта списка JSON на несколько на основе значений в Python

Сообщение Anonymous »

У меня есть объект JSON, как показано ниже,

Код: Выделить всё

Data = [
{
'Name': 'A1',
'Value': 10,
'Type': 'AAA'
},
{
'Name': 'A1',
'Value': 20,
'Type': 'AAA'
},
{
'Name': 'B1',
'Value': 10,
'Type': 'AAA'
},
{
'Name': 'C1',
'Value': 10,
'Type': 'BBB'
},
{
'Name': 'D1',
'Value': 10,
'Type': 'BBB'
}
]
И я хотел бы разделить объект на список на основе «Типа», а затем на основе «Имени», как показано ниже,

Код: Выделить всё

Data = {
'AAA': [
'A1': [
{
'Name': 'A1',
'Value': 10,
'Type': 'AAA'
},
{
'Name': 'A1',
'Value': 20,
'Type': 'AAA'
},
],
'B1': [
{
'Name': 'B1',
'Value': 10,
'Type': 'AAA'
},
]
],
'BBB': [
'C1': [
{
'Name': 'C1',
'Value': 10,
'Type': 'BBB'
}
],
'D1': [
{
'Name': 'D1',
'Value': 10,
'Type': 'BBB'
},
]
]
}
Чтобы добиться этого, я до сих пор пытался перебрать все данные, а затем разделить их на отдельные объекты на основе «Типа», а затем создать уникальный список «Имени», а затем перебирая вновь созданные объекты, чтобы разделить их по имени.
Я делал что-то вроде этого,

Код: Выделить всё

tTmp_List_1 = []
tTmp_List_2 = []

tTmp_Name_List_1 = []
tTmp_Name_List_2 = []

for tValue in Data:
if (tValue['Type'] == 'AAA'):
tTmp_List_1.append(tValue)
tTmp_Name_List_1.append(tValue['Name'])

if (tValue['Type'] == 'BBB'):
tTmp_List_2.append(tValue)
tTmp_Name_List_2.append(tValue['Name'])

tTmp_Name_List_1 = list(set(tTmp_Name_List_1))
tTmp_Name_List_2 = list(set(tTmp_Name_List_2))

Из приведенных выше «tTmp_Name_List_1» и «tTmp_Name_List_2» я собираюсь перебрать список, а затем сопоставить совпадающие имена с исходным объектом данных, чтобы получить отдельные объекты списка на основе имена, а затем установите их обратно примерно так

Код: Выделить всё

tTmp_Dict = {}
for tTmp_Name in tTmp_Name_List_1 :
tTmp = []
if (Data['Name'] == tTmp_Name):
tTmp.append(Data)

tTmp_Dict.append(tTmp)
Может ли кто-нибудь любезно предложить мне или помочь мне с более лучшим способом сделать это.
Любая помощь очень ценится.Спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»