【发布时间】:2013-06-10 10:48:36
【问题描述】:
我想从列表中提取一个项目,如果没有找到则返回一个默认值(而不是通常的索引异常)。与字典上的 get(key, default) 非常相似。仔细阅读文档后,感觉我仍然忽略了提供此功能的一个简单的内置 python 解决方案。
这是我能想到的最快速度:
def pluck(list_items, index, default=None):
return dict(zip(range(len(list_items)), list_items)).get(index, default)
s = [1, 2,]
pluck(s, 3, None)
谢谢!
【问题讨论】:
-
有一点,您应该阅读
enumerate。比zip(range(len....好看多了。 -
我不知道。您的解决方案应该可以工作,但与这些解决方案之一相比,创建一个新的
dict似乎需要做很多额外的工作。 stackoverflow.com/questions/2574636/… -
我认为
return list_items[item] if index < len(list_items) else default是最好的解决方案 -
@rpq:负指数呢?
-
@martineau
return list_items[item] if 0 <= item < len(list_items) else default
标签: python