Bagaimana untuk melaksanakan struktur data 1:n:1 dalam Python?
怪我咯
怪我咯 2017-05-18 10:55:26
0
3
767

Pertama sekali, terdapat sejumlah besar data, yang dibahagikan kepada 3 unit:

类型    第一个值    第二值

Sebagai contoh, terdapat 100 keping data sedemikian sekarang. Bagaimana untuk menanganinya?
Langkah pertama
Idea saya ialah membina 1:n:1 melalui kamus.
Namun, keadaan sekarang. Jika jenis adalah kunci, apakah yang perlu dilakukan jika terdapat jenis yang sama? Kerana kunci kamus adalah unik.

Langkah kedua ialah saya ingin mendapatkan nilai kedua melalui nilai pertama. Bagaimanakah saya boleh mendapatkan nilai kedua daripada nilai pertama tanpa mengetahui nilai pertama?

Terima kasih! ~


Mungkin ungkapannya tidak jelas, saya berikan contoh 1:n:1
Sebagai contoh, terdapat dua keping data seperti ini

        类型        第一个值        第二个值
 (1)   zhangsan   2017-01-01     是的我来了
 (2)   zhangsan   2017-05-01     我要走了

Kemudian saya ingin mengarang seperti ini:

    'zhangsan':{{'2017-01-01': '是的我来了'},{'2017-05-01':'我要走了'}}

Inilah hasil yang saya mahukan.
Maksudnya. 1:n:1 bermaksud 类型:第一个值:第二个值
Saya tidak tahu jika ada penyelesaian yang boleh dilaksanakan

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(3)
为情所困

Yang pertama: Jika nilai pertama adalah unik di bawah jenis yang sama, maka anda boleh mencuba struktur berikut:

value = '1:n:1'
mapping = defaultdict(dict)
value_type, fir_val, sec_val = value.split(':')
mapping = {
    value_type: {
        fir_val: sec_val 
    }
}

Perkara di atas bermakna mencipta nilai lalai 字典的字典mapping, 然后用类型第一个值分别作为索引的key, 我个人觉得, 在类型第一个值的共同约束下, 找到的第二个值sepatutnya unik Jika ia tidak unik, maka anda perlu mempertimbangkan sama ada untuk menulis ganti atau wujud dalam bentuk senarai

.

Kedua:
Jika anda menggunakan struktur data yang saya nyatakan di atas, maka tanpa mengetahui nilai pertama, anda hanya boleh merentasi pemetaan[value_type], dan kemudian tentukan sama ada nilai itu adalah apa yang anda mahukan

迷茫

Apakah maksud 1:n:1? Pemetaan hubungan? Tetapi ini tidak penting saya mempunyai cara yang mudah dan kasar untuk menulis setiap keping data sebagai 3-tuple (jenis, val1, val2), dan kemudian menyimpan setiap keping data ke dalam tatasusunan [];
pembinaan Apabila membuat tatasusunan, buat 3 dicts, typeDict = {type: [arrIdx]}, val1Dict={val1:[arrIdx]}, val2Dict={val2:[arrIdx]}
Apabila anda ingin menggunakan type untuk mencari data, hanya gunakan typeDict daripada Cari semua lokasi rekod yang sepadan dengan jenis.
Begitu juga, val1 dan val2 adalah sama.
Apabila anda ingin mencari jenisA, val1=n, anda hanya perlu memotong set hasil yang ditemui daripada typeDict, val1Dict.

某草草

Sekiranya jumlah data yang banyak, nampaknya lebih cekap menggunakan pangkalan data seperti mysql atau panda yang pakar dalam pemprosesan data. Panda juga mempunyai fungsi to_dict khusus.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan