Python:获取数据的函数总是返回None

时间:2012-03-15 00:45:51

标签: python list dictionary map

我有这个词典列表:

cust = [
        {"id": 1, "name": u"name 1", "bill_amount": 1000},
        {"id": 2, "name": u"name 2", "bill_amount": 5000},
        {"id": 3, "name": u"name 3", "bill_amount": 7600},
        {"id": 4, "name": u"name 4", "bill_amount": 30}
       ]

我想得到一份名单。

试试这个:

def getName(x): x["name"]
print map(getName, cust)

返回:

[None, None, None, None]

为什么呢?我错过了一些明显的东西吗?

3 个答案:

答案 0 :(得分:6)

你也可以使用operator.itemgetter()而不是为此定义你自己的函数:

>>> import operator
>>> map(operator.itemgetter("name"), cust)
[u'name 1', u'name 2', u'name 3', u'name 4']

答案 1 :(得分:3)

def getName(x):
    return x["name"]

在python中,一个不返回任何内容的函数返回None。不要将它与lambda语法混淆(有用但不是“pythonic”),它本来是:getName = lambda x: x["name"]

答案 2 :(得分:3)

正如已经指出的那样,你的函数没有返回任何东西。

对于记录,pythonic方法不是使用map,而是使用列表理解。

[d['name'] for d in cust]