我有这个词典列表:
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]
为什么呢?我错过了一些明显的东西吗?
答案 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]