2011-07-30 6 views
-1

これは一般的な問題だと思われますが、私は解決策を見つけることができません。Python3は値からキーを取得しますか?

私は、sqldicthitsdictという2つの辞書を含むPython3スクリプトを持っています。このコードは、辞書値を出力します(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]比較ならば誰もが、どのような私の問題であり、どのように私は私を渡す値からキーを入手することができますを説明できますか?ありがとうございました!

編集: 私が持っていた考えの1つは、加算値としてキーを追加することでした。別のもっとpythonic方法がありますか?

+1

あなたは何について話していますか? – hop

+0

申し訳ありませんが私の質問は混乱を引き起こしました。説明することは困難です。基本的には2つの辞書があり、両方の辞書にどの値アイテムが存在していたのかを見つけて、それらの値については対応するキーを取得する必要がありました。辞書の価値としてキーを使用する私のトリックは、誰もが必要とするすべてのものを同様のものに入れました。助けてくれてありがとう! – drbunsen

答えて

1

辞書の項目をループして値を見つけています。それは間違った方法です。辞書の全目的は、キーを使って物を見ることです。

要するに、あなたのデータ構造が完全に台無しです。どのように見えるかわからないので、どのように見えるかはわかりませんが、一方では値の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, ...} 

:各値に関連付けられたキー 私の考えでは、2つの辞書を作成し、です。

私はこれが「Pythonic」であるかどうかわかりませんが、私が理解しているところでは、あなたの問題に対処する必要があります。

関連する問題