atu*_*pal 0 python dictionary functional-programming list
假设我们有一个dicts列表:
[
{
'k1': 'v11',
'k2': 'v21',
'k3': 'v31'
},
{
'k1': 'v12',
'k2': 'v22',
'k3': 'v32'
},
{
'k1': 'v13',
'k2': 'v23',
'k3': 'v33'
}
]
Run Code Online (Sandbox Code Playgroud)
我想得到所有值的关键是k1:[v11, v12, v13],但不使用循环.
我试着使用map函数和functools.partial:
map(functools.partial(dict.get(), 'k1'), the_list)
Run Code Online (Sandbox Code Playgroud)
但这是错误的,因为我只能使用绑定第一个参数functools.partial.
那么有没有pythonic方法来做到这一点?
你可以用operator.itemgetter与map:
>> from operator import itemgetter
>>> map(itemgetter('k1'), data)
['v11', 'v12', 'v13']
Run Code Online (Sandbox Code Playgroud)
但是表现明智,它没有优于同等列表理解版本:
>>> data = data *1000
>>> %timeit map(itemgetter('k1'), data)
10000 loops, best of 3: 170 µs per loop
>>> %timeit [x['k1'] for x in data]
10000 loops, best of 3: 166 µs per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |