【问题标题】:Is there any way to take values from tuple in list like dict? [duplicate]有什么方法可以从 dict 之类的列表中的元组中获取值? [复制]
【发布时间】:2018-07-24 11:00:20
【问题描述】:

我正在尝试从下面的列表(列表中的元组)中获取价值:

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

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

【问题讨论】:

  • 看起来你想要一本字典。
  • 将您的列表添加到dict 构造函数中:d = dict(l)。请注意,我将您的列表重命名为 l,因为 list 是一种类型,您不应将其用作变量的名称。
  • 我怎样才能从这个列表中获得它?
  • 不,你不能像字典一样act创建一个元组列表,而实际上不实现字典。相反,将tuple 中的list 变为 dict,即mydict = list(list_of_tuples)
  • 哦,这非常简单...非常感谢。

标签: python list tuples


【解决方案1】:

如果键没有重复项(如果它们有,那么问题就很模糊了),并且键是 hashable (字符串是可散列的),我们可以使用 dictionary em>:

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,那 not 本身是否意味着未找到密钥:它可能意味着未找到密钥,但也可能是事实的结果该键与 None 值相关联。

【讨论】:

  • 如果键不存在,也可以使用字典的get()方法安全地返回一个合理的值。
  • 如果ourvalue 将在except 块中简单地分配另一个值,则可以使用dict.get(返回默认值)。
  • @pault:是的,但我作为生产软件开发人员的经验是,它经常弊大于利,因为 Python 的信条之一是 你永远不应该默默地传递错误,除非这些被明确地静音。不幸的是,我看到.get(..) 引起了很多麻烦,部分原因是如果您不传递明确的默认值,那么它会返回None,但None 也可以在字典中。
  • 感谢您的回答,是的,我已经删除了所有重复的密钥。
  • 公平点-我只是为了完整性而建议它。
猜你喜欢
  • 2012-06-14
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2011-12-26
  • 2017-07-07
相关资源
最近更新 更多