亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡化 Python 中多重散列的使用

簡化 Python 中多重散列的使用

狐的傳說 2021-11-09 10:22:36
我有一個大約 700 行和 3 列的 CSV 文件,其中包含label,rgb和string信息,例如:str;      rgb;                   label;         colorbones;    "['255','255','255']"; 2;             (241,214,145)Aorta;    "['255','0','0']";     17;            (216,101,79)VenaCava; "['0','0','255']";     16;            (0,151,206)我想創建一種簡單的方法來將一個唯一的輸入轉換為一個唯一的輸出。一種解決方案是使用相應的標簽條目作為字典散列所有 ROIDisplayColor 條目,例如rgb2label:with open("c:\my_file.csv") as csv_file:    rgb2label, label2rgb = {}, {} # rgb2str, label2str, str2label...    for row in csv.reader(csv_file):        rgb2label[row[1]] = row[2]        label2rgb[row[2]] = row[1]這可以簡單地使用如下:>>> rgb2label[ "['255','255','255']"]'2'>>> label2rgb['2']"['255','255','255']"該應用程序是sumple但需要一個獨特的獨特的字典每一種關系(rgb2label,rgb2str,str2rgb,str2label,等...)。是否存在具有相同易用性的更緊湊的解決方案?
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

在這里,您將自己限制在一對一的詞典中,因此最終會得到大量詞典(此處為 4^2=16)。


您可以改為使用一對多字典,因此您將只有 4 個:


for row in csv.reader(csv_file):

    rgb[row[1]] = row

    label[row[2]] = row

你會像這樣使用:


>>> rgb[ "['255','255','255']"][2]

'2'

>>> label['2'][1]

"['255','255','255']"

您也可以通過將您的行變成 adict來更清楚地說明這一點:


for row in csv.reader(csv_file):

    name, rgb, label, color = row

    d = {"rgb": rgb, "label": label}

    rgb[row[1]] = d

    label[row[2]] = d

你會像這樣使用:


>>> rgb[ "['255','255','255']"]["label"]

'2'

>>> label['2']["rgb"]

"['255','255','255']"


查看完整回答
反對 回復 2021-11-09
  • 1 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號