【发布时间】:2016-06-20 03:49:58
【问题描述】:
所以我有一个像这样的值列表:
{
"values":
[
{
"date": "2015-04-15T11:15:34",
"val": 30
},
{
"val": 90,
"date": "2015-04-19T11:15:34"
},
{
"val": 25,
"date": "2015-04-16T11:15:34"
}
]
}
我正在使用 pythons 默认 json 解析器将其解析为如下列表:
with open(file) as f:
data = json.load(f)
values = data["values"]
然后我尝试按日期对数据进行排序,如下所示:
values.sort(key=lambda values: values["date"])
这很有效(据我所知)。我的问题是它为什么有效?如果我不能访问 values["date"] 那么为什么我可以使用这个 lambda 函数呢? values 不能像“date”这样的键只取一个整数。我的意思是我只能访问这样的值:values[0]、values[1] 等......因为它是一个列表而不是字典。所以如果这个 lambda 函数等效是这样的:
def some_method(values):
return values[“date”]
那么这是无效的,因为 values 是一个列表而不是字典。我无法访问值["date"]。
那么为什么我可以像这样通过函数传递日期呢?另外,如果您能深入解释 lambda,那将不胜感激。我已经阅读了有关堆栈溢出的其他帖子,但它们对我来说没有意义。
用更多信息更新问题,使问题更清晰。
【问题讨论】:
-
将 lambda 视为具有隐含 return 语句的函数的简短形式,您就可以开始了。