Python operator.itemgetter{item} and operator.itemgetter{*items}
- 1. `operator.itemgetter(item)` and `operator.itemgetter(*items)`
- References
operator - Standard operators as functions
https://docs.python.org/3/library/operator.html
The operator
module exports a set of efficient functions corresponding to the intrinsic operators of Python. For example, operator.add(x, y)
is equivalent to the expression x+y
.
operator
模块提供了一套与 Python 的内置运算符对应的高效率函数。例如,operator.add(x, y)
与表达式 x+y
相同。
Many function names are those used for special methods, without the double underscores. For backward compatibility, many of these have a variant with the double underscores kept. The variants without the double underscores are preferred for clarity.
许多函数名与特殊方法名相同,只是没有双下划线。为了向后兼容性,也保留了许多包含双下划线的函数。为了表述清楚,建议使用没有双下划线的函数。
The functions fall into categories that perform object comparisons, logical operations, mathematical operations and sequence operations.
比较运算、逻辑运算、数学运算以及序列运算。
1. operator.itemgetter(item)
and operator.itemgetter(*items)
operator.itemgetter(item)
operator.itemgetter(*items)
Return a callable object that fetches item
from its operand using the operand’s __getitem__()
method. If multiple items are specified, returns a tuple of lookup values.
返回一个使用操作数的 __getitem__()
方法从操作数中获取 item
的可调用对象。 如果指定了多个条目,则返回一个查找值的元组。
For example:
- After
f = itemgetter(2)
, the callf(r)
returnsr[2]
. - After
g = itemgetter(2, 5, 3)
, the callg(r)
returns(r[2], r[5], r[3])
.
Equivalent to:
def itemgetter(*items):if len(items) == 1:item = items[0]def g(obj):return obj[item]else:def g(obj):return tuple(obj[item] for item in items)return g
The items
can be any type accepted by the operand’s __getitem__()
method.
# This is a sample Python script.# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.import operatordef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f"Hi, {name}") # Press Ctrl+F8 to toggle the breakpoint.# Press the green button in the gutter to run the script.
if __name__ == '__main__':print_hi("PyCharm")# See PyCharm help at https://www.jetbrains.com/help/pycharm/str = "ABCDEFG"fun1 = operator.itemgetter(1)fun2 = operator.itemgetter(1, 3, 5)print("fun1(str):", fun1(str))print("fun2(str):", fun2(str))soldier = dict(rank="captain", name="yongqiang")fun3 = operator.itemgetter("name")print("fun3(soldier):", fun3(soldier))inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]getcount = operator.itemgetter(1)result = sorted(inventory, key=getcount)print('\n', type(result))print("result:", result)
/home/yongqiang/miniconda3/bin/python /home/yongqiang/langchain_work/yongqiang/main.py
Hi, PyCharm
fun1(str): B
fun2(str): ('B', 'D', 'F')
fun3(soldier): yongqiang<class 'list'>
result: [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]Process finished with exit code 0
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/