Menemukan beberapa posting tentang ini, tetapi tidak ada solusi yang menyelesaikan apa yang saya cari. Saya mencoba mengimpor file excel dan menyimpannya sebagai JSON, tetapi kelompokkan beberapa kolom di bawah yang lain dalam file JSON.

Ini data excel saya :

enter image description here

Ini kode python saya:

from collections import OrderedDict
import simplejson as json

wb = xlrd.open_workbook(r'C:\Users\Artie\Desktop\animals.xls')
sh = wb.sheet_by_index(0)
#
data_list = []
#
for rownum in range(1, sh.nrows):
    data = OrderedDict()
    row_values = sh.row_values(rownum)
    data['ID'] = row_values[0]
    data['type'] = row_values[1]
    data['name'] = row_values[2]
    data['weight'] = row_values[3]
    data_list.append(data)
#
j = json.dumps(data_list)
#
with open('animals.json', 'w') as f:
    f.write(j)```

Hasil JSON saya:

[{"ID": 1.0, "type": "dog", "name": "fido", "weight": 40.0}, 
{"ID": 2.0, "type": "dog", "name": "max", "weight": 20.0}, 
{"ID": 3.0, "type": "dog", "name": "maxwell", "weight": 10.0}, 
{"ID": 4.0, "type": "dog", "name": "bella", "weight": 50.0}, 
{"ID": 5.0, "type": "dog", "name": "doggy", "weight": 8.0}, 
{"ID": 6.0, "type": "cat", "name": "kitty", "weight": 9.0}, 
{"ID": 7.0, "type": "cat", "name": "missy", "weight": 4.0}, 
{"ID": 8.0, "type": "cat", "name": "duey", "weight": 15.0}, 
{"ID": 9.0, "type": "cat", "name": "louie", "weight": 11.0}]

Hasil JSON yang diinginkan:

Saya ingin mengelompokkan setiap record di bawah kolom tipe, sehingga hasilnya di bawah tipe anjing akan terlihat seperti ini

'dog': [
             {
                "ID": 1.0, "name": "fido", "weight": 40.0,
            },
            {
                "ID": 2.0, "name": "max", "weight": 20.0,
            },
            {
                "ID": 3.0, "name": "maxwell", "weight": 10.0,
            },
            {
                "ID": 4.0, "name": "bella", "weight": 50.0,
            },
            {
                "ID": 5.0, "name": "doggy", "weight": 8.0,
            }


        ]

Bantuan apa pun akan sangat dihargai. Terima kasih.

-1
hitachi7 12 Mei 2021, 09:47

1 menjawab

Jawaban Terbaik

Catatan: Saya belum mencoba ini sepenuhnya tetapi yang Anda butuhkan adalah kamus luar (di mana tipe adalah kunci dan nilainya adalah daftar hewan peliharaan dari tipe itu)

pet_type = {}

for rownum in range(1, sh.nrows):
    data = OrderedDict()
    row_values = sh.row_values(rownum)
    data['ID'] = row_values[0]
    data['type'] = row_values[1]
    data['name'] = row_values[2]
    data['weight'] = row_values[3]

    ptype = row_values[1]
    pet_type.setdefault(ptype, [])
    pet_type[ptype].append(data)

Lihat apakah ini membantu.

1
shahkalpesh 12 Mei 2021, 07:01