だから私は単語と一致する数字で構成される辞書を持っています。ユーザーの入力内容に基づいて、辞書の一部にアクセスできるようにしたいと考えています。
ユーザーが「2」などの数字を入力すると、プログラムが「2」に一致する項目を辞書から選択して出力するようにするにはどうすればよいですか? または、ユーザーが "hydrogen" (辞書の単語) を入力した場合、対応する番号 ("1") を出力する必要があります。
前もって感謝します
だから私は単語と一致する数字で構成される辞書を持っています。ユーザーの入力内容に基づいて、辞書の一部にアクセスできるようにしたいと考えています。
ユーザーが「2」などの数字を入力すると、プログラムが「2」に一致する項目を辞書から選択して出力するようにするにはどうすればよいですか? または、ユーザーが "hydrogen" (辞書の単語) を入力した場合、対応する番号 ("1") を出力する必要があります。
前もって感謝します
要素を原子番号にマップする辞書と、原子番号を要素にマップする辞書のいずれかを作成できます。これはO(1)
時間内に実行されます。
>>> ele2atm = {'hydrogen':'2', 'oxygen':'8', 'carbon':'7'}
>>> atm2ele = {k:v for v, k in ele2atm.items()}
def get_value(key):
try:
return ele2atm[key]
except KeyError:
return atm2ele[key]
>>> get_value('8')
'oxygen'
>>> get_value('carbon')
'7'
またはbidict
、キーと値を 1 対 1 でマッピングできるパッケージを使用してください。
例:
>>> husbands2wives = bidict({'john': 'jackie'})
>>> husbands2wives['john'] # the forward mapping is just like with dict
'jackie'
>>> husbands2wives[:'jackie'] # use slice for the inverse mapping
'john'
辞書が次のようになっていると仮定します(要素に数字を言ったため):
elements = {'2': 'Hydrogen', '8': 'Oxygen'}
次のコードを使用できます。
user_input = '2'
for key,value in elements.items():
if user_input == key:
print value
if user_input == value:
print key
ループをメソッドに変換できます。
def search_dictionary(user_input, haystack):
for key,value in haystack.items():
if user_input == key:
return value
if user_input == value:
return key
次に、次のように使用します。
user_input = raw_input('Please enter your search item: ')
elements = {'2': 'Hydrogen', '8': 'Oxygen'}
result = search_dictionary(user_input, elements)
if result:
print("The result of your search is {0}".format(result))
else:
print("Your search for {0} returned no results".format(user_input))
2 つの辞書を作成します。
dict1 = {
1: "baz",
2: "bar",
...
}
dict2 = {
"hydrogen": 1,
"helium": 2,
...
}
input_ = raw_input("pick something: ")
try:
print dict1[int(input_)]
except ValueError:
print dict1[dict2[input_]]
except KeyError:
print "Your desired key does not exist!"