2014-02-19 160 views
1

我有一本字典:Python:具有一個鍵和多個值的字典:如何獲得具有相同SET值的鍵的列表?

MPO  - GSTM1 FINC ELN 

HMOX1  - GSTM1 ELN CAV1 

POLD1  - GSTM1 FINC ELN 

MAPK1  - FINC ELN CAV1 

VCAM1  - FINC ELN CAV1 

CTGF  - FINC ELN CAV1 

DECR1  - GSTM1 ELN CAV1 

即一個包含多個值的關鍵。我需要梳理相對於價值觀的SET鍵和得到的結果如下。

GSTM1 FINC ELN --> MPO , POLD1 

GSTM1 ELN CAV1 --> HMOX1 , DECR1 

FINC ELN CAV1 --> MAPK1 , VCAM1 , CTGF 

我需要找到具有相同的一組值的鍵。我是一個Python的初學者,並不知道如何開始..需要幫助!

+1

您有文字的列表,請你重新格式化到實際的Python數據結構? – msvalkon

回答

0
dic = {} 

dic['MPO']= 'GSTM1 FINC ELN' 

dic['HMOX1'] = 'GSTM1 ELN CAV1' 

dic['POLD1'] = 'GSTM1 FINC ELN' 

dic['MAPK1'] = 'FINC ELN CAV1' 

dic['VCAM1'] = 'FINC ELN CAV1' 

dic['CTGF']= 'FINC ELN CAV1' 

dic['DECR1'] = 'GSTM1 ELN CAV1' 

keys = dic.keys() 
values = set(dic.values()) 

for value in values: 
    allkeys = '' 
    for key in keys: 
     if dic[key] == value: 
      allkeys = allkeys +" "+str(key)+"," 
    print value ,'--->', allkeys 

輸出:

GSTM1 ELN CAV1 ---> HMOX1, DECR1, 
GSTM1 FINC ELN ---> MPO, POLD1, 
FINC ELN CAV1 ---> CTGF, MAPK1, VCAM1, 
+0

只需要我需要..非常感謝你! – enigma

+0

非常歡迎。 –

1

如果你已經建立了這個詞典,你可以從這個詞典的值中保存另一個詞典到這個詞典鍵的列表。如果此字典按原樣輸入,則必須迭代這些值並構建反向字典/集以回答這種查詢。

-1

你在這裏(以下假設值的代碼已經是一個字符串列表):

# a special dict that will create a default value for each key, in this case a list 
inversed_dict = defaultdict(list) 
#loop over the key, values couples 
for key, values in mydict.iteritem(): 
     #turn values into a tuple, which is immutable, and therefore can be a key in a dict 
     values = tuple(values) 
     # use the value as key, and append the former key to the lsit (default value of the defaultdict) 
     inversed_dict[values].append(key) 
相關問題