如何在python中访问字典的一部分?

如何在python中访问字典的一部分?,python,dictionary,Python,Dictionary,所以我有一本字典,里面有与一个单词匹配的数字。 我希望能够根据用户输入的内容访问字典的一部分 我如何使它,如果用户输入一个数字,例如“2”,程序从字典中选择匹配“2”的项目并打印它?或者,如果用户输入“hydrogen”(字典中的一个词),则需要打印相应的数字(“1”) 提前感谢制作两本词典: dict1 = { 1: "baz", 2: "bar", ... } dict2 = { "hydrogen": 1, "helium": 2, ...

所以我有一本字典,里面有与一个单词匹配的数字。 我希望能够根据用户输入的内容访问字典的一部分

我如何使它,如果用户输入一个数字,例如“2”,程序从字典中选择匹配“2”的项目并打印它?或者,如果用户输入“hydrogen”(字典中的一个词),则需要打印相应的数字(“1”)

提前感谢

制作两本词典:

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!"
制作两本字典:

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!"

您可以创建两个DICT,一个将元素映射到其原子序数,另一个将原子序数映射到元素。这将在
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'
或者使用允许键和值之间一对一映射的包

例如:

>>> husbands2wives = bidict({'john': 'jackie'})
>>> husbands2wives['john'] # the forward mapping is just like with dict
'jackie'
>>> husbands2wives[:'jackie'] # use slice for the inverse mapping
'john'

您可以创建两个DICT,一个将元素映射到其原子序数,另一个将原子序数映射到元素。这将在
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'
或者使用允许键和值之间一对一映射的包

例如:

>>> husbands2wives = bidict({'john': 'jackie'})
>>> husbands2wives['john'] # the forward mapping is just like with dict
'jackie'
>>> husbands2wives[:'jackie'] # use slice for the inverse mapping
'john'

假设您的字典如下所示(因为您将数字表示为元素):

您可以使用以下代码:

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))

假设您的字典如下所示(因为您将数字表示为元素):

您可以使用以下代码:

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))

你的字典是什么样子的?将来向我们展示你试图解决问题的方法会很有帮助。你可以使用以下解决方案之一,或者使用你的字典是什么样子的?将来向我们展示你试图解决问题的方法会很有帮助。你可以使用以下解决方案之一,或者使用请注意,这是在
O(N)
时间内运行的。我认为这对OP没有那么重要:)请注意,这是在
O(N)
时间内运行的。我认为这对OP没有那么重要:)