当期望列表仅包含单个元素时获取列表元素的Pythonic方法?
Posted
技术标签:
【中文标题】当期望列表仅包含单个元素时获取列表元素的Pythonic方法?【英文标题】:Pythonic way to get list element when expectation is that list contains only a single element? 【发布时间】:2014-04-28 00:52:10 【问题描述】:我经常遇到这样的情况,即查询一些返回列表的数据源,但我希望该列表只包含一个元素。现在我做:
el = result_list[0]
如果列表为空,可能会在 try 块中。但是,我不喜欢它。什么是最好的方法?这样做会很酷:
el = result_list.only()
如果列表为空或包含多个元素,这可能会导致呕吐。
【问题讨论】:
Pythonic 通常不会在这样的事情上失败,但如果你需要,我会检查 len==1 并在必要时引发 ValueError。 很多东西(比如数据库)为fetch_one
而不是fetch_all
提供了一个API,所以如果所说的源提供这样的方法(或者你可以写一个)我会这样做。跨度>
【参考方案1】:
在 Python 2 或 3 中:
>>> a, = [1]
>>> a
1
>>> a, = []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 0 values to unpack
>>> a, = [1,2,3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)
在 Python 3 中,您还可以
>>> a,*_ = [1,2,3]
>>> a
1
【讨论】:
当然!干得好,谢谢。我会在几分钟后接受这个。以上是关于当期望列表仅包含单个元素时获取列表元素的Pythonic方法?的主要内容,如果未能解决你的问题,请参考以下文章
为啥带有单个条目的python列表为-1索引和0索引提供第0个元素? [复制]
当列表填充数组时,如何在 SwiftUI 中获取列表中元素的索引?
使用 Python 将多个字符串元素列表转换为单个元素以逗号分隔的列表