90a*_*yss 1 python dictionary list
假设我有这个对象列表:
listt = [{
"CustomerId": "1",
"Date": "2017-02-02",
"Content": "AAAAAAAA",
"Type": 2
},
{
"CustomerId": "2",
"Date": "2017-02-03",
"Content": "BBBBBBBB",
"Type": 1
},
{
"CustomerId": "3",
"Date": "2017-02-01",
"Content": "CCCCCCCCC",
"Type": 1
},
{
"CustomerId": "4",
"Date": "2017-02-12",
"Content": "DDDDDDDDDD",
"Type": 2
}, ]
Run Code Online (Sandbox Code Playgroud)
找到答案的最简洁方法是什么?
- Type = 1的最小日期.
=> 2017-02-1
- 选择Type = 2和Date =的内容=(Type = 2的所有对象中的最小日期)
=> AAAAAAAA
我正在阅读有关利用lambda和过滤器的内容,但我无法取得任何进展.有人可以帮忙吗?
这些是基本的Python数据结构.而不是map
和filter
我会建议使用内涵.例如:
>>> listt = [{
... "CustomerId": "1",
... "Date": "2017-02-02",
... "Content": "AAAAAAAA",
... "Type": 2
... },
... {
... "CustomerId": "2",
... "Date": "2017-02-03",
... "Content": "BBBBBBBB",
... "Type": 1
... },
... {
... "CustomerId": "3",
... "Date": "2017-02-01",
... "Content": "CCCCCCCCC",
... "Type": 1
... },
... {
... "CustomerId": "4",
... "Date": "2017-02-12",
... "Content": "DDDDDDDDDD",
... "Type": 2
... }, ]
>>> min(d['Date'] for d in listt if d['Type'] == 1)
'2017-02-01'
>>>
Run Code Online (Sandbox Code Playgroud)
或者,为您第二次查询:
>>> min_date = min(d['Date'] for d in listt if d['Type'] == 2)
>>> [d['Content'] for d in listt if d['Date'] == min_date]
['AAAAAAAA']
>>>
Run Code Online (Sandbox Code Playgroud)
试图坚持理解结构使事物更易读,IMO,而不是使用lambda
,虽然,它也有它的位置,而且是一个风格的问题.然而,列表内涵是一般的快比同等map
使用lambda
.但是,map
内置函数可以更快.