搜索未显示的python字典

搜索未显示的python字典,python,Python,我是python新手,已经研究了其他几个问题,但我的问题无法解决。简单地说,我有一个元素列表及其详细信息,我试图做的是让用户输入符号,然后返回与符号相关的详细信息。有人能帮我吗?当我运行程序时,我什么也看不到 def eDict(): elements = {'H':[('N', 'Hydrogen'),('AN', 1), ('M', 1.08)], 'He':[('N' 'Helium'), ('AN', 2), ('M', 4.00)], 'Li':[('N' 'Lith

我是python新手,已经研究了其他几个问题,但我的问题无法解决。简单地说,我有一个元素列表及其详细信息,我试图做的是让用户输入符号,然后返回与符号相关的详细信息。有人能帮我吗?当我运行程序时,我什么也看不到

def eDict():
    elements = {'H':[('N', 'Hydrogen'),('AN', 1), ('M', 1.08)], 
    'He':[('N' 'Helium'), ('AN', 2), ('M', 4.00)], 'Li':[('N' 'Lithium'),
     ('AN', 3), ('M', 6.94)]}

    search(elements, 'H')

def search(values, searchFor):
    for k in values:
        for v in values[k]:
            if searchFor in v:
                return k
    return None

eDict()
像这样搜索:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
打印
H[('N','Hydrogen'),('AN',1),('M',1.08)]
用于
搜索(元素,'H')

如果只需要详细信息,请仅返回详细信息:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print details #As @PM 2Ring says, for Python 3x you should print (details)
打印
[('N','Hydrogen'),('AN',1),('M',1.08)]
进行
搜索(元素,'H')
如下搜索:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
打印
H[('N','Hydrogen'),('AN',1),('M',1.08)]
用于
搜索(元素,'H')

如果只需要详细信息,请仅返回详细信息:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print details #As @PM 2Ring says, for Python 3x you should print (details)
打印
[('N','Hydrogen'),('AN',1),('M',1.08)]
进行
搜索(元素,'H')
如下搜索:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
打印
H[('N','Hydrogen'),('AN',1),('M',1.08)]
用于
搜索(元素,'H')

如果只需要详细信息,请仅返回详细信息:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print details #As @PM 2Ring says, for Python 3x you should print (details)
打印
[('N','Hydrogen'),('AN',1),('M',1.08)]
进行
搜索(元素,'H')
如下搜索:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
打印
H[('N','Hydrogen'),('AN',1),('M',1.08)]
用于
搜索(元素,'H')

如果只需要详细信息,请仅返回详细信息:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print details #As @PM 2Ring says, for Python 3x you should print (details)
打印
[('N',Hydrogen'),('AN',1),('M',1.08)]
用于
搜索(元素,'H')
字典将键(在您的示例中,键是
'H'
)映射到值(在您的示例中:
[('N',Hydrogen'),('AN',1),('M',1.08)]

因此,通常您需要做的是:

>>> print elements['H']
[('N', 'Hydrogen'),('AN', 1), ('M', 1.08)]

但是,您可以考虑将这些值转换成适当的DICT,例如:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
通过这种方式,可以打印图元的所有信息(如上所述),也可以打印图元的特定基准:

>>> print elements['H']
{'AN': 1, 'M': 1.08, 'N': 'Hydrogen'}
>>> print elements['H']['M']
1.08
字典将键(在您的示例中,键是
'H'
)映射到值(在您的示例中:
[('N','Hydrogen'),('AN',1),('M',1.08)]

因此,通常您需要做的是:

>>> print elements['H']
[('N', 'Hydrogen'),('AN', 1), ('M', 1.08)]

但是,您可以考虑将这些值转换成适当的DICT,例如:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
通过这种方式,可以打印图元的所有信息(如上所述),也可以打印图元的特定基准:

>>> print elements['H']
{'AN': 1, 'M': 1.08, 'N': 'Hydrogen'}
>>> print elements['H']['M']
1.08
字典将键(在您的示例中,键是
'H'
)映射到值(在您的示例中:
[('N','Hydrogen'),('AN',1),('M',1.08)]

因此,通常您需要做的是:

>>> print elements['H']
[('N', 'Hydrogen'),('AN', 1), ('M', 1.08)]

但是,您可以考虑将这些值转换成适当的DICT,例如:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
通过这种方式,可以打印图元的所有信息(如上所述),也可以打印图元的特定基准:

>>> print elements['H']
{'AN': 1, 'M': 1.08, 'N': 'Hydrogen'}
>>> print elements['H']['M']
1.08
字典将键(在您的示例中,键是
'H'
)映射到值(在您的示例中:
[('N','Hydrogen'),('AN',1),('M',1.08)]

因此,通常您需要做的是:

>>> print elements['H']
[('N', 'Hydrogen'),('AN', 1), ('M', 1.08)]

但是,您可以考虑将这些值转换成适当的DICT,例如:

def search(values, searchFor):
    for element, details in values.items():
        if element == searchFor:
           print element, details #As @PM 2Ring says, for Python 3x you should print (element, details)
elements = {'H': {'N': 'Hydrogen', 'AN': 1, 'M': 1.08}, … }
通过这种方式,可以打印图元的所有信息(如上所述),也可以打印图元的特定基准:

>>> print elements['H']
{'AN': 1, 'M': 1.08, 'N': 'Hydrogen'}
>>> print elements['H']['M']
1.08

这里是一个Python2.6版本,它为每个元素使用一个元组

#! /usr/bin/env python

'''
Simple database of chemical elements
From http://stackoverflow.com/questions/25882694/search-python-dictionary-not-showing#25882947
'''

fields = ('Name', 'Atomic number', 'Mass')
elements = {
    'H':  ('Hydrogen', 1, 1.08), 
    'He': ('Helium', 2, 4.00), 
    'Li': ('Lithium', 3, 6.94),
}

import sys

def main():
    if len(sys.argv) > 1:
        symbols = sys.argv[1:]
    else:
        print "No symbols given!"
        exit(1)

    #for k in elements: print "%2s: %s" % (k, elements[k])

    for symbol in symbols:
        element = elements[symbol]
        print 'Symbol: %2s,' % symbol,
        print ', '.join(['%s: %s' % t for t in zip(fields, element)])


if __name__ == '__main__':
    main()
如果您像这样运行它:
python Elements.py Li He H
你得到

输出: 您可以通过使用打印格式使它看起来更漂亮


编辑

FWIW,这是一个完整的元素目录,使用IUPAC数据

elements = {
    'H'  : ('Hydrogen', 1, 1.00798),
    'He' : ('Helium', 2, 4.00260),
    'Li' : ('Lithium', 3, 6.96750),
    'Be' : ('Beryllium', 4, 9.01218),
    'B'  : ('Boron', 5, 10.81350),
    'C'  : ('Carbon', 6, 12.01060),
    'N'  : ('Nitrogen', 7, 14.00685),
    'O'  : ('Oxygen', 8, 15.99940),
    'F'  : ('Fluorine', 9, 18.99840),
    'Ne' : ('Neon', 10, 20.17970),
    'Na' : ('Sodium', 11, 22.98977),
    'Mg' : ('Magnesium', 12, 24.30550),
    'Al' : ('Aluminium', 13, 26.98154),
    'Si' : ('Silicon', 14, 28.08500),
    'P'  : ('Phosphorus', 15, 30.97376),
    'S'  : ('Sulfur', 16, 32.06750),
    'Cl' : ('Chlorine', 17, 35.45150),
    'Ar' : ('Argon', 18, 39.94800),
    'K'  : ('Potassium', 19, 39.09830),
    'Ca' : ('Calcium', 20, 40.07800),
    'Sc' : ('Scandium', 21, 44.95591),
    'Ti' : ('Titanium', 22, 47.86700),
    'V'  : ('Vanadium', 23, 50.94150),
    'Cr' : ('Chromium', 24, 51.99610),
    'Mn' : ('Manganese', 25, 54.93804),
    'Fe' : ('Iron', 26, 55.84500),
    'Co' : ('Cobalt', 27, 58.93319),
    'Ni' : ('Nickel', 28, 58.69340),
    'Cu' : ('Copper', 29, 63.54600),
    'Zn' : ('Zinc', 30, 65.38000),
    'Ga' : ('Gallium', 31, 69.72300),
    'Ge' : ('Germanium', 32, 72.63000),
    'As' : ('Arsenic', 33, 74.92159),
    'Se' : ('Selenium', 34, 78.97100),
    'Br' : ('Bromine', 35, 79.90400),
    'Kr' : ('Krypton', 36, 83.79800),
    'Rb' : ('Rubidium', 37, 85.46780),
    'Sr' : ('Strontium', 38, 87.62000),
    'Y'  : ('Yttrium', 39, 88.90584),
    'Zr' : ('Zirconium', 40, 91.22400),
    'Nb' : ('Niobium', 41, 92.90637),
    'Mo' : ('Molybdenum', 42, 95.95000),
    'Tc' : ('Technetium', 43, 98),
    'Ru' : ('Ruthenium', 44, 101.07000),
    'Rh' : ('Rhodium', 45, 102.90550),
    'Pd' : ('Palladium', 46, 106.42000),
    'Ag' : ('Silver', 47, 107.86820),
    'Cd' : ('Cadmium', 48, 112.41400),
    'In' : ('Indium', 49, 114.81800),
    'Sn' : ('Tin', 50, 118.71000),
    'Sb' : ('Antimony', 51, 121.76000),
    'Te' : ('Tellurium', 52, 127.60000),
    'I'  : ('Iodine', 53, 126.90447),
    'Xe' : ('Xenon', 54, 131.29300),
    'Cs' : ('Cesium', 55, 132.90545),
    'Ba' : ('Barium', 56, 137.32700),
    'La' : ('Lanthanum', 57, 138.90547),
    'Ce' : ('Cerium', 58, 140.11600),
    'Pr' : ('Praseodymium', 59, 140.90766),
    'Nd' : ('Neodymium', 60, 144.24200),
    'Pm' : ('Promethium', 61, 145),
    'Sm' : ('Samarium', 62, 150.36000),
    'Eu' : ('Europium', 63, 151.96400),
    'Gd' : ('Gadolinium', 64, 157.25000),
    'Tb' : ('Terbium', 65, 158.92535),
    'Dy' : ('Dysprosium', 66, 162.50000),
    'Ho' : ('Holmium', 67, 164.93033),
    'Er' : ('Erbium', 68, 167.25900),
    'Tm' : ('Thulium', 69, 168.93422),
    'Yb' : ('Ytterbium', 70, 173.05400),
    'Lu' : ('Lutetium', 71, 174.96680),
    'Hf' : ('Hafnium', 72, 178.49000),
    'Ta' : ('Tantalum', 73, 180.94788),
    'W'  : ('Tungsten', 74, 183.84000),
    'Re' : ('Rhenium', 75, 186.20700),
    'Os' : ('Osmium', 76, 190.23000),
    'Ir' : ('Iridium', 77, 192.21700),
    'Pt' : ('Platinum', 78, 195.08400),
    'Au' : ('Gold', 79, 196.96657),
    'Hg' : ('Mercury', 80, 200.59200),
    'Tl' : ('Thallium', 81, 204.38350),
    'Pb' : ('Lead', 82, 207.20000),
    'Bi' : ('Bismuth', 83, 208.98040),
    'Po' : ('Polonium', 84, 209),
    'At' : ('Astatine', 85, 210),
    'Rn' : ('Radon', 86, 222),
    'Fr' : ('Francium', 87, 223),
    'Ra' : ('Radium', 88, 226),
    'Ac' : ('Actinium', 89, 227),
    'Th' : ('Thorium', 90, 232.03770),
    'Pa' : ('Protactinium', 91, 231.03588),
    'U'  : ('Uranium', 92, 238.02891),
    'Np' : ('Neptunium', 93, 237),
    'Pu' : ('Plutonium', 94, 244),
    'Am' : ('Americium', 95, 243),
    'Cm' : ('Curium', 96, 247),
    'Bk' : ('Berkelium', 97, 247),
    'Cf' : ('Californium', 98, 251),
    'Es' : ('Einsteinium', 99, 252),
    'Fm' : ('Fermium', 100, 257),
    'Md' : ('Mendelevium', 101, 258),
    'No' : ('Nobelium', 102, 259),
    'Lr' : ('Lawrencium', 103, 262),
    'Rf' : ('Rutherfordium', 104, 267),
    'Db' : ('Dubnium', 105, 268),
    'Sg' : ('Seaborgium', 106, 271),
    'Bh' : ('Bohrium', 107, 272),
    'Hs' : ('Hassium', 108, 270),
    'Mt' : ('Meitnerium', 109, 276),
    'Ds' : ('Darmstadtium', 110, 281),
    'Rg' : ('Roentgenium', 111, 280),
    'Cn' : ('Copernicium', 112, 285),
    'Uut': ('Ununtrium', 113, 284),
    'Fl' : ('Flerovium', 114, 289),
    'Uup': ('Ununpentium', 115, 288),
    'Lv' : ('Livermorium', 116, 293),
    'Uuo': ('Ununoctium', 118, 294),
}

这里是一个Python2.6版本,它为每个元素使用一个元组

#! /usr/bin/env python

'''
Simple database of chemical elements
From http://stackoverflow.com/questions/25882694/search-python-dictionary-not-showing#25882947
'''

fields = ('Name', 'Atomic number', 'Mass')
elements = {
    'H':  ('Hydrogen', 1, 1.08), 
    'He': ('Helium', 2, 4.00), 
    'Li': ('Lithium', 3, 6.94),
}

import sys

def main():
    if len(sys.argv) > 1:
        symbols = sys.argv[1:]
    else:
        print "No symbols given!"
        exit(1)

    #for k in elements: print "%2s: %s" % (k, elements[k])

    for symbol in symbols:
        element = elements[symbol]
        print 'Symbol: %2s,' % symbol,
        print ', '.join(['%s: %s' % t for t in zip(fields, element)])


if __name__ == '__main__':
    main()
如果您像这样运行它:
python Elements.py Li He H
你得到

输出: 您可以通过使用打印格式使它看起来更漂亮


编辑

FWIW,这是一个完整的元素目录,使用IUPAC数据

elements = {
    'H'  : ('Hydrogen', 1, 1.00798),
    'He' : ('Helium', 2, 4.00260),
    'Li' : ('Lithium', 3, 6.96750),
    'Be' : ('Beryllium', 4, 9.01218),
    'B'  : ('Boron', 5, 10.81350),
    'C'  : ('Carbon', 6, 12.01060),
    'N'  : ('Nitrogen', 7, 14.00685),
    'O'  : ('Oxygen', 8, 15.99940),
    'F'  : ('Fluorine', 9, 18.99840),
    'Ne' : ('Neon', 10, 20.17970),
    'Na' : ('Sodium', 11, 22.98977),
    'Mg' : ('Magnesium', 12, 24.30550),
    'Al' : ('Aluminium', 13, 26.98154),
    'Si' : ('Silicon', 14, 28.08500),
    'P'  : ('Phosphorus', 15, 30.97376),
    'S'  : ('Sulfur', 16, 32.06750),
    'Cl' : ('Chlorine', 17, 35.45150),
    'Ar' : ('Argon', 18, 39.94800),
    'K'  : ('Potassium', 19, 39.09830),
    'Ca' : ('Calcium', 20, 40.07800),
    'Sc' : ('Scandium', 21, 44.95591),
    'Ti' : ('Titanium', 22, 47.86700),
    'V'  : ('Vanadium', 23, 50.94150),
    'Cr' : ('Chromium', 24, 51.99610),
    'Mn' : ('Manganese', 25, 54.93804),
    'Fe' : ('Iron', 26, 55.84500),
    'Co' : ('Cobalt', 27, 58.93319),
    'Ni' : ('Nickel', 28, 58.69340),
    'Cu' : ('Copper', 29, 63.54600),
    'Zn' : ('Zinc', 30, 65.38000),
    'Ga' : ('Gallium', 31, 69.72300),
    'Ge' : ('Germanium', 32, 72.63000),
    'As' : ('Arsenic', 33, 74.92159),
    'Se' : ('Selenium', 34, 78.97100),
    'Br' : ('Bromine', 35, 79.90400),
    'Kr' : ('Krypton', 36, 83.79800),
    'Rb' : ('Rubidium', 37, 85.46780),
    'Sr' : ('Strontium', 38, 87.62000),
    'Y'  : ('Yttrium', 39, 88.90584),
    'Zr' : ('Zirconium', 40, 91.22400),
    'Nb' : ('Niobium', 41, 92.90637),
    'Mo' : ('Molybdenum', 42, 95.95000),
    'Tc' : ('Technetium', 43, 98),
    'Ru' : ('Ruthenium', 44, 101.07000),
    'Rh' : ('Rhodium', 45, 102.90550),
    'Pd' : ('Palladium', 46, 106.42000),
    'Ag' : ('Silver', 47, 107.86820),
    'Cd' : ('Cadmium', 48, 112.41400),
    'In' : ('Indium', 49, 114.81800),
    'Sn' : ('Tin', 50, 118.71000),
    'Sb' : ('Antimony', 51, 121.76000),
    'Te' : ('Tellurium', 52, 127.60000),
    'I'  : ('Iodine', 53, 126.90447),
    'Xe' : ('Xenon', 54, 131.29300),
    'Cs' : ('Cesium', 55, 132.90545),
    'Ba' : ('Barium', 56, 137.32700),
    'La' : ('Lanthanum', 57, 138.90547),
    'Ce' : ('Cerium', 58, 140.11600),
    'Pr' : ('Praseodymium', 59, 140.90766),
    'Nd' : ('Neodymium', 60, 144.24200),
    'Pm' : ('Promethium', 61, 145),
    'Sm' : ('Samarium', 62, 150.36000),
    'Eu' : ('Europium', 63, 151.96400),
    'Gd' : ('Gadolinium', 64, 157.25000),
    'Tb' : ('Terbium', 65, 158.92535),
    'Dy' : ('Dysprosium', 66, 162.50000),
    'Ho' : ('Holmium', 67, 164.93033),
    'Er' : ('Erbium', 68, 167.25900),
    'Tm' : ('Thulium', 69, 168.93422),
    'Yb' : ('Ytterbium', 70, 173.05400),
    'Lu' : ('Lutetium', 71, 174.96680),
    'Hf' : ('Hafnium', 72, 178.49000),
    'Ta' : ('Tantalum', 73, 180.94788),
    'W'  : ('Tungsten', 74, 183.84000),
    'Re' : ('Rhenium', 75, 186.20700),
    'Os' : ('Osmium', 76, 190.23000),
    'Ir' : ('Iridium', 77, 192.21700),
    'Pt' : ('Platinum', 78, 195.08400),
    'Au' : ('Gold', 79, 196.96657),
    'Hg' : ('Mercury', 80, 200.59200),
    'Tl' : ('Thallium', 81, 204.38350),
    'Pb' : ('Lead', 82, 207.20000),
    'Bi' : ('Bismuth', 83, 208.98040),
    'Po' : ('Polonium', 84, 209),
    'At' : ('Astatine', 85, 210),
    'Rn' : ('Radon', 86, 222),
    'Fr' : ('Francium', 87, 223),
    'Ra' : ('Radium', 88, 226),
    'Ac' : ('Actinium', 89, 227),
    'Th' : ('Thorium', 90, 232.03770),
    'Pa' : ('Protactinium', 91, 231.03588),
    'U'  : ('Uranium', 92, 238.02891),
    'Np' : ('Neptunium', 93, 237),
    'Pu' : ('Plutonium', 94, 244),
    'Am' : ('Americium', 95, 243),
    'Cm' : ('Curium', 96, 247),
    'Bk' : ('Berkelium', 97, 247),
    'Cf' : ('Californium', 98, 251),
    'Es' : ('Einsteinium', 99, 252),
    'Fm' : ('Fermium', 100, 257),
    'Md' : ('Mendelevium', 101, 258),
    'No' : ('Nobelium', 102, 259),
    'Lr' : ('Lawrencium', 103, 262),
    'Rf' : ('Rutherfordium', 104, 267),
    'Db' : ('Dubnium', 105, 268),
    'Sg' : ('Seaborgium', 106, 271),
    'Bh' : ('Bohrium', 107, 272),
    'Hs' : ('Hassium', 108, 270),
    'Mt' : ('Meitnerium', 109, 276),
    'Ds' : ('Darmstadtium', 110, 281),
    'Rg' : ('Roentgenium', 111, 280),
    'Cn' : ('Copernicium', 112, 285),
    'Uut': ('Ununtrium', 113, 284),
    'Fl' : ('Flerovium', 114, 289),
    'Uup': ('Ununpentium', 115, 288),
    'Lv' : ('Livermorium', 116, 293),
    'Uuo': ('Ununoctium', 118, 294),
}

这里是一个Python2.6版本,它为每个元素使用一个元组

#! /usr/bin/env python

'''
Simple database of chemical elements
From http://stackoverflow.com/questions/25882694/search-python-dictionary-not-showing#25882947
'''

fields = ('Name', 'Atomic number', 'Mass')
elements = {
    'H':  ('Hydrogen', 1, 1.08), 
    'He': ('Helium', 2, 4.00), 
    'Li': ('Lithium', 3, 6.94),
}

import sys

def main():
    if len(sys.argv) > 1:
        symbols = sys.argv[1:]
    else:
        print "No symbols given!"
        exit(1)

    #for k in elements: print "%2s: %s" % (k, elements[k])

    for symbol in symbols:
        element = elements[symbol]
        print 'Symbol: %2s,' % symbol,
        print ', '.join(['%s: %s' % t for t in zip(fields, element)])


if __name__ == '__main__':
    main()
如果您像这样运行它:
python Elements.py Li He H
你得到

输出: 您可以通过使用打印格式使它看起来更漂亮


编辑

FWIW,这是一个完整的元素目录,使用IUPAC数据

elements = {
    'H'  : ('Hydrogen', 1, 1.00798),
    'He' : ('Helium', 2, 4.00260),
    'Li' : ('Lithium', 3, 6.96750),
    'Be' : ('Beryllium', 4, 9.01218),
    'B'  : ('Boron', 5, 10.81350),
    'C'  : ('Carbon', 6, 12.01060),
    'N'  : ('Nitrogen', 7, 14.00685),
    'O'  : ('Oxygen', 8, 15.99940),
    'F'  : ('Fluorine', 9, 18.99840),
    'Ne' : ('Neon', 10, 20.17970),
    'Na' : ('Sodium', 11, 22.98977),
    'Mg' : ('Magnesium', 12, 24.30550),
    'Al' : ('Aluminium', 13, 26.98154),
    'Si' : ('Silicon', 14, 28.08500),
    'P'  : ('Phosphorus', 15, 30.97376),
    'S'  : ('Sulfur', 16, 32.06750),
    'Cl' : ('Chlorine', 17, 35.45150),
    'Ar' : ('Argon', 18, 39.94800),
    'K'  : ('Potassium', 19, 39.09830),
    'Ca' : ('Calcium', 20, 40.07800),
    'Sc' : ('Scandium', 21, 44.95591),
    'Ti' : ('Titanium', 22, 47.86700),
    'V'  : ('Vanadium', 23, 50.94150),
    'Cr' : ('Chromium', 24, 51.99610),
    'Mn' : ('Manganese', 25, 54.93804),
    'Fe' : ('Iron', 26, 55.84500),
    'Co' : ('Cobalt', 27, 58.93319),
    'Ni' : ('Nickel', 28, 58.69340),
    'Cu' : ('Copper', 29, 63.54600),
    'Zn' : ('Zinc', 30, 65.38000),
    'Ga' : ('Gallium', 31, 69.72300),
    'Ge' : ('Germanium', 32, 72.63000),
    'As' : ('Arsenic', 33, 74.92159),
    'Se' : ('Selenium', 34, 78.97100),
    'Br' : ('Bromine', 35, 79.90400),
    'Kr' : ('Krypton', 36, 83.79800),
    'Rb' : ('Rubidium', 37, 85.46780),
    'Sr' : ('Strontium', 38, 87.62000),
    'Y'  : ('Yttrium', 39, 88.90584),
    'Zr' : ('Zirconium', 40, 91.22400),
    'Nb' : ('Niobium', 41, 92.90637),
    'Mo' : ('Molybdenum', 42, 95.95000),
    'Tc' : ('Technetium', 43, 98),
    'Ru' : ('Ruthenium', 44, 101.07000),
    'Rh' : ('Rhodium', 45, 102.90550),
    'Pd' : ('Palladium', 46, 106.42000),
    'Ag' : ('Silver', 47, 107.86820),
    'Cd' : ('Cadmium', 48, 112.41400),
    'In' : ('Indium', 49, 114.81800),
    'Sn' : ('Tin', 50, 118.71000),
    'Sb' : ('Antimony', 51, 121.76000),
    'Te' : ('Tellurium', 52, 127.60000),
    'I'  : ('Iodine', 53, 126.90447),
    'Xe' : ('Xenon', 54, 131.29300),
    'Cs' : ('Cesium', 55, 132.90545),
    'Ba' : ('Barium', 56, 137.32700),
    'La' : ('Lanthanum', 57, 138.90547),
    'Ce' : ('Cerium', 58, 140.11600),
    'Pr' : ('Praseodymium', 59, 140.90766),
    'Nd' : ('Neodymium', 60, 144.24200),
    'Pm' : ('Promethium', 61, 145),
    'Sm' : ('Samarium', 62, 150.36000),
    'Eu' : ('Europium', 63, 151.96400),
    'Gd' : ('Gadolinium', 64, 157.25000),
    'Tb' : ('Terbium', 65, 158.92535),
    'Dy' : ('Dysprosium', 66, 162.50000),
    'Ho' : ('Holmium', 67, 164.93033),
    'Er' : ('Erbium', 68, 167.25900),
    'Tm' : ('Thulium', 69, 168.93422),
    'Yb' : ('Ytterbium', 70, 173.05400),
    'Lu' : ('Lutetium', 71, 174.96680),
    'Hf' : ('Hafnium', 72, 178.49000),
    'Ta' : ('Tantalum', 73, 180.94788),
    'W'  : ('Tungsten', 74, 183.84000),
    'Re' : ('Rhenium', 75, 186.20700),
    'Os' : ('Osmium', 76, 190.23000),
    'Ir' : ('Iridium', 77, 192.21700),
    'Pt' : ('Platinum', 78, 195.08400),
    'Au' : ('Gold', 79, 196.96657),
    'Hg' : ('Mercury', 80, 200.59200),
    'Tl' : ('Thallium', 81, 204.38350),
    'Pb' : ('Lead', 82, 207.20000),
    'Bi' : ('Bismuth', 83, 208.98040),
    'Po' : ('Polonium', 84, 209),
    'At' : ('Astatine', 85, 210),
    'Rn' : ('Radon', 86, 222),
    'Fr' : ('Francium', 87, 223),
    'Ra' : ('Radium', 88, 226),
    'Ac' : ('Actinium', 89, 227),
    'Th' : ('Thorium', 90, 232.03770),
    'Pa' : ('Protactinium', 91, 231.03588),
    'U'  : ('Uranium', 92, 238.02891),
    'Np' : ('Neptunium', 93, 237),
    'Pu' : ('Plutonium', 94, 244),
    'Am' : ('Americium', 95, 243),
    'Cm' : ('Curium', 96, 247),
    'Bk' : ('Berkelium', 97, 247),
    'Cf' : ('Californium', 98, 251),
    'Es' : ('Einsteinium', 99, 252),
    'Fm' : ('Fermium', 100, 257),
    'Md' : ('Mendelevium', 101, 258),
    'No' : ('Nobelium', 102, 259),
    'Lr' : ('Lawrencium', 103, 262),
    'Rf' : ('Rutherfordium', 104, 267),
    'Db' : ('Dubnium', 105, 268),
    'Sg' : ('Seaborgium', 106, 271),
    'Bh' : ('Bohrium', 107, 272),
    'Hs' : ('Hassium', 108, 270),
    'Mt' : ('Meitnerium', 109, 276),
    'Ds' : ('Darmstadtium', 110, 281),
    'Rg' : ('Roentgenium', 111, 280),
    'Cn' : ('Copernicium', 112, 285),
    'Uut': ('Ununtrium', 113, 284),
    'Fl' : ('Flerovium', 114, 289),
    'Uup': ('Ununpentium', 115, 288),
    'Lv' : ('Livermorium', 116, 293),
    'Uuo': ('Ununoctium', 118, 294),
}

这里是一个Python2.6版本,它为每个元素使用一个元组

#! /usr/bin/env python

'''
Simple database of chemical elements
From http://stackoverflow.com/questions/25882694/search-python-dictionary-not-showing#25882947
'''

fields = ('Name', 'Atomic number', 'Mass')
elements = {
    'H':  ('Hydrogen', 1, 1.08), 
    'He': ('Helium', 2, 4.00), 
    'Li': ('Lithium', 3, 6.94),
}

import sys

def main():
    if len(sys.argv) > 1:
        symbols = sys.argv[1:]
    else:
        print "No symbols given!"
        exit(1)

    #for k in elements: print "%2s: %s" % (k, elements[k])

    for symbol in symbols:
        element = elements[symbol]
        print 'Symbol: %2s,' % symbol,
        print ', '.join(['%s: %s' % t for t in zip(fields, element)])


if __name__ == '__main__':
    main()
如果您像这样运行它:
python Elements.py Li He H
你得到

输出: 您可以通过使用打印格式使它看起来更漂亮


编辑

FWIW,这是一个完整的元素目录,使用IUPAC数据

elements = {
    'H'  : ('Hydrogen', 1, 1.00798),
    'He' : ('Helium', 2, 4.00260),
    'Li' : ('Lithium', 3, 6.96750),
    'Be' : ('Beryllium', 4, 9.01218),
    'B'  : ('Boron', 5, 10.81350),
    'C'  : ('Carbon', 6, 12.01060),
    'N'  : ('Nitrogen', 7, 14.00685),
    'O'  : ('Oxygen', 8, 15.99940),
    'F'  : ('Fluorine', 9, 18.99840),
    'Ne' : ('Neon', 10, 20.17970),
    'Na' : ('Sodium', 11, 22.98977),
    'Mg' : ('Magnesium', 12, 24.30550),
    'Al' : ('Aluminium', 13, 26.98154),
    'Si' : ('Silicon', 14, 28.08500),
    'P'  : ('Phosphorus', 15, 30.97376),
    'S'  : ('Sulfur', 16, 32.06750),
    'Cl' : ('Chlorine', 17, 35.45150),
    'Ar' : ('Argon', 18, 39.94800),
    'K'  : ('Potassium', 19, 39.09830),
    'Ca' : ('Calcium', 20, 40.07800),
    'Sc' : ('Scandium', 21, 44.95591),
    'Ti' : ('Titanium', 22, 47.86700),
    'V'  : ('Vanadium', 23, 50.94150),
    'Cr' : ('Chromium', 24, 51.99610),
    'Mn' : ('Manganese', 25, 54.93804),
    'Fe' : ('Iron', 26, 55.84500),
    'Co' : ('Cobalt', 27, 58.93319),
    'Ni' : ('Nickel', 28, 58.69340),
    'Cu' : ('Copper', 29, 63.54600),
    'Zn' : ('Zinc', 30, 65.38000),
    'Ga' : ('Gallium', 31, 69.72300),
    'Ge' : ('Germanium', 32, 72.63000),
    'As' : ('Arsenic', 33, 74.92159),
    'Se' : ('Selenium', 34, 78.97100),
    'Br' : ('Bromine', 35, 79.90400),
    'Kr' : ('Krypton', 36, 83.79800),
    'Rb' : ('Rubidium', 37, 85.46780),
    'Sr' : ('Strontium', 38, 87.62000),
    'Y'  : ('Yttrium', 39, 88.90584),
    'Zr' : ('Zirconium', 40, 91.22400),
    'Nb' : ('Niobium', 41, 92.90637),
    'Mo' : ('Molybdenum', 42, 95.95000),
    'Tc' : ('Technetium', 43, 98),
    'Ru' : ('Ruthenium', 44, 101.07000),
    'Rh' : ('Rhodium', 45, 102.90550),
    'Pd' : ('Palladium', 46, 106.42000),
    'Ag' : ('Silver', 47, 107.86820),
    'Cd' : ('Cadmium', 48, 112.41400),
    'In' : ('Indium', 49, 114.81800),
    'Sn' : ('Tin', 50, 118.71000),
    'Sb' : ('Antimony', 51, 121.76000),
    'Te' : ('Tellurium', 52, 127.60000),
    'I'  : ('Iodine', 53, 126.90447),
    'Xe' : ('Xenon', 54, 131.29300),
    'Cs' : ('Cesium', 55, 132.90545),
    'Ba' : ('Barium', 56, 137.32700),
    'La' : ('Lanthanum', 57, 138.90547),
    'Ce' : ('Cerium', 58, 140.11600),
    'Pr' : ('Praseodymium', 59, 140.90766),
    'Nd' : ('Neodymium', 60, 144.24200),
    'Pm' : ('Promethium', 61, 145),
    'Sm' : ('Samarium', 62, 150.36000),
    'Eu' : ('Europium', 63, 151.96400),
    'Gd' : ('Gadolinium', 64, 157.25000),
    'Tb' : ('Terbium', 65, 158.92535),
    'Dy' : ('Dysprosium', 66, 162.50000),
    'Ho' : ('Holmium', 67, 164.93033),
    'Er' : ('Erbium', 68, 167.25900),
    'Tm' : ('Thulium', 69, 168.93422),
    'Yb' : ('Ytterbium', 70, 173.05400),
    'Lu' : ('Lutetium', 71, 174.96680),
    'Hf' : ('Hafnium', 72, 178.49000),
    'Ta' : ('Tantalum', 73, 180.94788),
    'W'  : ('Tungsten', 74, 183.84000),
    'Re' : ('Rhenium', 75, 186.20700),
    'Os' : ('Osmium', 76, 190.23000),
    'Ir' : ('Iridium', 77, 192.21700),
    'Pt' : ('Platinum', 78, 195.08400),
    'Au' : ('Gold', 79, 196.96657),
    'Hg' : ('Mercury', 80, 200.59200),
    'Tl' : ('Thallium', 81, 204.38350),
    'Pb' : ('Lead', 82, 207.20000),
    'Bi' : ('Bismuth', 83, 208.98040),
    'Po' : ('Polonium', 84, 209),
    'At' : ('Astatine', 85, 210),
    'Rn' : ('Radon', 86, 222),
    'Fr' : ('Francium', 87, 223),
    'Ra' : ('Radium', 88, 226),
    'Ac' : ('Actinium', 89, 227),
    'Th' : ('Thorium', 90, 232.03770),
    'Pa' : ('Protactinium', 91, 231.03588),
    'U'  : ('Uranium', 92, 238.02891),
    'Np' : ('Neptunium', 93, 237),
    'Pu' : ('Plutonium', 94, 244),
    'Am' : ('Americium', 95, 243),
    'Cm' : ('Curium', 96, 247),
    'Bk' : ('Berkelium', 97, 247),
    'Cf' : ('Californium', 98, 251),
    'Es' : ('Einsteinium', 99, 252),
    'Fm' : ('Fermium', 100, 257),
    'Md' : ('Mendelevium', 101, 258),
    'No' : ('Nobelium', 102, 259),
    'Lr' : ('Lawrencium', 103, 262),
    'Rf' : ('Rutherfordium', 104, 267),
    'Db' : ('Dubnium', 105, 268),
    'Sg' : ('Seaborgium', 106, 271),
    'Bh' : ('Bohrium', 107, 272),
    'Hs' : ('Hassium', 108, 270),
    'Mt' : ('Meitnerium', 109, 276),
    'Ds' : ('Darmstadtium', 110, 281),
    'Rg' : ('Roentgenium', 111, 280),
    'Cn' : ('Copernicium', 112, 285),
    'Uut': ('Ununtrium', 113, 284),
    'Fl' : ('Flerovium', 114, 289),
    'Uup': ('Ununpentium', 115, 288),
    'Lv' : ('Livermorium', 116, 293),
    'Uuo': ('Ununoctium', 118, 294),
}


只需打印
搜索的结果(元素,'H')
,或者返回并打印
法令()
?@thefourtheye好的,我这样做了,它打印了'He',但没有打印H的详细信息。
返回k,v
而不是
返回k
@BryanMoyles输出的
('He',NHelium'))
它打印
NHelium
,因为dict中缺少逗号,Python将字符串连接在一起。锂的名字也缺少逗号。只需打印
搜索(元素,'H')
的结果,或者返回并打印
法令()
?@thefourtheye好的,我这样做了,它打印了'He',但没有打印H的详细信息。
返回k,v
而不是
返回k
@BryanMoyles输出的
('He',NHelium'))
它打印
NHelium
,因为dict中缺少逗号,Python将字符串连接在一起。锂的名字也缺少逗号。只需打印
搜索(元素,'H')
的结果,或者返回并打印
法令()
?@thefourtheye好的,我这样做了,它打印了'He',但没有打印H的详细信息。
返回k,v
而不是
返回k
@BryanMoyles输出的
('He',NHelium'))
它打印
NHelium
,因为dict中缺少逗号,Python将字符串连接在一起。锂元素的名称也缺少逗号。只需打印
搜索结果(元素“H”)
或返回b即可