有没有办法从列表中的元组中获取值,如dict?

时间:2018-02-13 23:52:38

标签: python list tuples

我试图从下面的列表(列表中的元组)中获取值:

list =  [('look', 38),
         ('ganesh', 35),
         ('said', 30),
         ('tiger', 30),
         ('cat', 28)]

我想要做的是通过输入单词名称来获取值,例如,如果我输入'look',它将返回38而不是输入我已经完成的list[0][1]。我已经删除了此列表中的所有重复单词。 否则,我应该用分隔项目和值重新制作字典吗?

1 个答案:

答案 0 :(得分:2)

如果密钥没有重复项(如果这些密钥不是问题,那么它是非常模糊的),并且密钥是 hashable (字符串是可清除的),我们可以使用字典

thelist = [('look', 38),
           ('ganesh', 35),
           ('said', 30),
           ('tiger', 30),
           ('cat', 28)]
thedict = dict(thelist)

现在我们可以使用:

执行查找
thedict['look']

这会给我们38,如果我们查找不存在的密钥,例如'bobcat',那么Python会引发一个关键错误:

>>> thedict['bobcat']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'bobcat

我们可以通过以下方式处理它:

ourkey = 'bobcat'
try:
    ourvalue = thedict[ourkey]
except KeyError:
    # do something in case not present
    pass
  

注意:不要使用listdicttuple等变量名称,因为您覆盖了对list类的引用

     

注意:如果您想在查找失败时使用默认值,可以使用thedict.get(ourkey, defaultvalue),或者如果应该None,我们可以使用thedict.get(ourkey)。请注意,如果此类函数返回None,那么本身意味着找不到密钥:它可能意味着找不到密钥,但它也可能是密钥与None值相关联的事实。