【发布时间】:2018-02-26 12:41:40
【问题描述】:
Python itemgetter 不返回长度为 0 或 1 的元组。
例如:
from operator import itemgetter
def get_something(keys):
d = {
"a": 1,
"b": 2,
"c": 3
}
return itemgetter(*keys)(d)
print(type(get_something(["a", "b"])))
# <class 'tuple'>
print(type(get_something(["a"])))
# <class 'int'>
print(type(get_something([])))
# TypeError: itemgetter expected 1 arguments, got 0
itemgetter这样写有什么好的理由吗?而不是(1,)是倒数第二个()和最后一个?如果我总是想在给定键的情况下返回元组/列表,还有其他内置选项吗?
【问题讨论】:
-
你的
prints实际上return是做什么的? -
我在上面加了
-
itemgetter是一个非常简单的辅助函数。如果它的工作方式不适合您,您应该编写自己的工作方式以您想要的方式工作。 FWIW 我同意你关于不一致的返回类型。 -
@SpoonMeiser 是的,但对我来说这看起来像是一个明显的设计缺陷,但我仍然意识到创建 Python 的人比我聪明 100 倍。所以我想了解我在这里缺少什么。
标签: python python-3.x