Python中怎么實(shí)現(xiàn)1:n:1的數(shù)據(jù)結(jié)構(gòu)?
問題描述
首先有大量的數(shù)據(jù),數(shù)據(jù)的分為3個(gè)單元組成:
類型 第一個(gè)值 第二值
比如現(xiàn)在有100條這樣的數(shù)據(jù)。如何處理呢?第一步我的想法就是通過(guò)字典來(lái)構(gòu)建1:n:1。但是,現(xiàn)在情況是。如果類型為key的話,那么如果有相同類型要怎么處理?因?yàn)樽值涞膋ey是唯一的。
第二步的情況是,我要通過(guò)第一個(gè)值來(lái)獲取第二值。我要怎么才能在不知道第一個(gè)值的情況下通過(guò)第一個(gè)值來(lái)獲取第二個(gè)值?
謝謝!~
可能表達(dá)不清楚,我舉例說(shuō)明一下1:n:1的比如有兩條數(shù)據(jù)是這樣的
類型第一個(gè)值第二個(gè)值 (1) zhangsan 2017-01-01 是的我來(lái)了 (2) zhangsan 2017-05-01 我要走了
然后我想要組成這樣的東西:
’zhangsan’:{{’2017-01-01’: ’是的我來(lái)了’},{’2017-05-01’:’我要走了’}}
這是我想要的結(jié)果。也就是說(shuō)。1:n:1表示 類型:第一個(gè)值:第二個(gè)值不知道有沒有可行的方案
問題解答
回答1:第一個(gè): 如果在同一類型前提下, 第一個(gè)值是唯一的話, 那么可以試下下面的結(jié)構(gòu):
value = ’1:n:1’mapping = defaultdict(dict)value_type, fir_val, sec_val = value.split(’:’)mapping = { value_type: {fir_val: sec_val }}
上面的意思就是, 創(chuàng)建一個(gè)默認(rèn)值為字典的字典mapping, 然后用類型和第一個(gè)值分別作為索引的key, 我個(gè)人覺得, 在類型和第一個(gè)值的共同約束下, 找到的第二個(gè)值應(yīng)該是唯一的, 如果不是唯一的, 那么就要考慮是否覆蓋, 還是以列表的形式存在
第二個(gè):如果你采用我上面的數(shù)據(jù)結(jié)構(gòu), 那么你在不知道第一個(gè)值的前提下, 只能遍歷mapping[value_type], 然后判斷值是否你想要的
回答2:這個(gè)1:n:1 是什么意思?映射關(guān)系嗎?不過(guò)這個(gè)并不重要,我有一個(gè)簡(jiǎn)單粗暴的方法就是每條數(shù)據(jù)寫成一個(gè)3元組(type,val1,val2),然后把每條數(shù)據(jù)都存到數(shù)組里[];在構(gòu)建數(shù)組的時(shí)候做3個(gè)dict,typeDict = {type:[arrIdx]},val1Dict={val1:[arrIdx]},val2Dict={val2:[arrIdx]}當(dāng)要用type查找數(shù)據(jù)的時(shí)候就從typeDict從查找所有與type對(duì)應(yīng)的記錄位置。同理val1和val2一樣。當(dāng)要查找typeA,val1=n的時(shí)候只需要把從typeDict,val1Dict查出的結(jié)果集做交集就好了。
回答3:如果大量數(shù)據(jù),似乎應(yīng)該是用數(shù)據(jù)庫(kù)比如mysql或者是pandas這樣專門處理數(shù)據(jù)的包會(huì)效率更高啊。pandas還有專門to_dict的函數(shù)。
相關(guān)文章:
1. mysql - 表名稱前綴到底有啥用?2. 怎么php怎么通過(guò)數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。3. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?4. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決5. 為什么php修改數(shù)據(jù)無(wú)法同步到數(shù)據(jù)庫(kù),只是當(dāng)前頁(yè)面修改成功?6. 編輯成功不顯示彈窗7. sublime可以用其他編譯器替換嗎?8. tp 6.0 數(shù)據(jù)查詢,求教!9. sql語(yǔ)句 - 如何在mysql中批量添加用戶?10. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法
