joh*_*101 2 python dictionary list-comprehension list filter
说我有字典:
myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'},
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'}
{'first': 'Robert', 'last': 'Antonio'}]
Run Code Online (Sandbox Code Playgroud)
我有一个名为键的列表:
keys = ["middle", "last"]
Run Code Online (Sandbox Code Playgroud)
我想根据键中的每个值来过滤myDict,这会导致
filteredDict = [{'middle': 'Smith', 'last': 'Joule'},
{'middle': 'Johnson', 'last': 'Watt'},
{'middle': 'Edward', 'last': 'Doppler'},
{'last': 'Antonio'}]
Run Code Online (Sandbox Code Playgroud)
如myDict列表中的列表字典中所示,字典DOESNT必须具有两个键才能放入filteredDict.在Python中使用字典理解是否有一种简单的方法可以做到这一点?
使用列表推导:
myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'},
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'},
{'first': 'Robert', 'last': 'Antonio'}]
keys = {"middle", "last"}
l = [{k:v for k, v in i.items() if k in keys} for i in myDict]
Run Code Online (Sandbox Code Playgroud)
但你也可以使用map来做到这一点:
myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'},
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'},
{'first': 'Robert', 'last': 'Antonio'}]
keys = {"middle", "last"}
l = list(map(lambda x: {k:v for k, v in x.items() if k in keys}, myDict))
print(l)
Run Code Online (Sandbox Code Playgroud)
输出:
[{'last': 'Joule', 'middle': 'Smith'}, {'last': 'Watt', 'middle': 'Johnson'}, {'last': 'Doppler', 'middle': 'Edward'}, {'last': 'Antonio'}]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7196 次 |
最近记录: |