Python operator.itemgetter(item) and operator.itemgetter(*items)

Python operator.itemgetter{item} and operator.itemgetter{*items}

  • [1. `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 call f(r) returns r[2].
  • After g = itemgetter(2, 5, 3), the call g(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 operator


def 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/

相关推荐
名明鸣冥1 小时前
k8s-agent架构思考(一)
python
DoLovya2 小时前
从零实现 ESP8266 + MQTT 智能门禁:公网一键开门、舵机控制、在线监控完整方案
python·物联网·mqtt·嵌入式·esp8266·门禁系统
AI情绪识别开源2 小时前
检信ALLEMOTION VibrationAI 2.4.0 12维度情绪识别开源源代码
开发语言·python
极创信息2 小时前
国产化信创适配认证高频术语:信创适配、软件自主可控、国产化率、代码溯源率、代码自主率、代码开源率是什么?
java·python·struts·eclipse·开源·php·hibernate
AC赳赳老秦3 小时前
语义采集进阶实战:利用 OpenClaw AI 语义识别自动提取网页核心信息,无需手动编写选择器
java·运维·服务器·python·信息可视化·deepseek·openclaw
Logintern093 小时前
什么时候应该用多进程什么时候用多线程呢?
开发语言·python
无凭4 小时前
字节跳动 DeerFlow:Agent Harness 怎么让大模型主动向用户提问?
人工智能·python
蜀道山老天师4 小时前
Python + Playwright 实现问卷星自动化填写
python
Zane19944 小时前
多开几个线程,为什么算数字反而没变快?一文讲透 CPython 的 GIL
后端·python
W_326004 小时前
Python-OpenCV边缘检测与阈值分割:Sobel、Scharr、Laplacian、Canny、全局与自适应阈值
开发语言·图像处理·python·opencv·机器学习