2011-07-30 72 views
-1

看起來這是一個常見問題,但我似乎無法找到解決方案。Python3從值中獲取鍵?

我有一個Python3腳本包含兩個字典sqldicthitsdict。此代碼輸出字典值,如果sqldict[value][0] == hitsdict[thing][1]

for value in sqldict: 
     for thing in hitsdict: 
      if sqldict[value][0] == hitsdict[thing][1]: 
       print(hitsdict[thing][1],sqldict[value][5]) 

我也想獲取與匹配sqldict[value][0] == hitsdict[thing][1]比較,該值相關聯的密鑰,但我似乎無法弄清楚如何獲得相關的密鑰?我試圖做這樣的事情:

for key, value in sqldict.items(): 
     for thing in hitsdict: 
      if sqldict[value][0] == hitsdict[thing][1]: 
          print(key,hitsdict[thing][1],sqldict[value][5]) 

任何人都可以解釋我的問題是什麼,以及如何我可以從我的傳遞,如果值比較sqldict[value][0] == hitsdict[thing][1]拿到鑰匙,?謝謝!

編輯: 我的一個想法是添加密鑰作爲附加值。還有另一種pythonic方式嗎?

+1

你在說什麼? – hop

+0

對不起,我的問題產生了混淆;這很難解釋。基本上,我有兩本字典,我想找到哪些價值物品出現在這兩本字典中,然後爲這些值獲取相應的密鑰。我使用密鑰作爲字典值的技巧使每個人都需要類似的東西。謝謝您的幫助! – drbunsen

回答

1

您正在通過循環查看字典中的項目來查找值。這是錯誤的方式。字典的全部目的是使用鍵來查找事物。

總之,你的數據結構是完全搞砸了。由於我們不知道它的外觀,因此我們不能告訴你它應該如何顯示,但另一方面,其中一個值中包含「sql」一詞。

我可以建議你使用SQL查詢來做任何你想做的事嗎?

1

字典查找是「按鍵」而不是「按值」。

>>> d = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} 
>>> for key in d: 
...  print key 
... 
key3 
key2 
key1 

我很抱歉,但我想不出任何其他的答案,但「你是幹什麼其榮!」

0

你可以使用我所說的「反義詞」。 我的想法是,你創建兩個字典:

dict1 = {key1: value1, key2: value2, ...} 
dict1_inv = {value1: key1, value2: key2, ...} 

現在你可以很快與每個鍵和逆相關的值:鍵與每個值相關聯。

我不知道這是不是「Pythonic」,但根據我的理解,應該解決您的問題。