如何从Python中的元组列表中创建函数?

时间:2016-08-01 06:36:22

标签: python function tuples

我想使用元组列表创建一个函数,从第一个元素到第二个元素,

+-----------------------+--------+----------+
| PurchaseOrderDetailID | ItemID | Quantity |
+-----------------------+--------+----------+
|                    1  | Item1  |        5 |           
|                    2  | Item1  |       10 |                 
+-----------------------+--------+----------+

我想要以下结果:

Tuplelist = [(1, 17), (2, 13), (3, 17), (4, 4), (5, 12), (6, 10), (7, 20), (18, 36), (22, 12), (23, 39)]

看起来很简单,但我无法在网上找到相关问题。 提前谢谢!

2 个答案:

答案 0 :(得分:1)

def func(item):
    return dict(Tuplelist)[item]

或更好,如果您不想在每次调用函数时创建字典,

dictTuplelist = dict(Tuplelist)
def func(item):
    return dictTuplelist[item]

print func(1), func(2), func(3)
# 17 13 17

答案 1 :(得分:0)

如果这是您将要处理的所有值 - 结果,那么dictionary就是您需要的

>>> Tuplelist = [(1, 17), (2, 13), (3, 17), (4, 4), (5, 12), (6, 10), (7, 20), (18, 36), (22, 12), (23, 39)] 
>>> my_map = dict(Tuplelist)
>>> my_map[1]
17
>>> my_map[5]
12
>>> my_map[23]
39

如果你想要它的功能是一个简单的

def my_fun(key):
    return dict(Tuplelist)[key]

或其他一些变体,如

def my_fun(key):
    Tuplelist = dict([(1, 17), (2, 13), (3, 17), (4, 4), (5, 12), (6, 10), (7, 20), (18, 36), (22, 12), (23, 39)] )
    return Tuplelist[key]

MyValues = dict([(1, 17), (2, 13), (3, 17), (4, 4), (5, 12), (6, 10), (7, 20), (18, 36), (22, 12), (23, 39)] )

def my_fun(key):
    return MyValues[key]

无论如何,如果这就是你所需要的,我会直接使用字典而不是制作一个以更有限的方式做同样的功能。

您也可以在列表中进行简单的线性搜索,但这会失去字典提供的速度

Tuplelist = [(1, 17), (2, 13), (3, 17), (4, 4), (5, 12), (6, 10), (7, 20), (18, 36), (22, 12), (23, 39)] 

def my_func(key):
    for k,v in Tuplelist:
        if k == key:
            return v