【发布时间】:2018-02-28 21:03:18
【问题描述】:
我正在使用 API 的多个端点,这些端点在返回的数据中非常冗长。我想将此数据的一个子集提供给其他地方的另一段代码。
假设给了我几个这样的字典(我打算循环并过滤):
asset = {
'id': 1,
'name': 'MY-PC',
'owner': 'me',
'location': 'New York City',
'model': {
'id': 1,
'name': 'Surface',
'manufacturer': {
'id': 1,
'name': 'Microsoft'
}
}
}
我想创建一个函数来接收该字典,以及一个“掩码”,该掩码将用于创建一个仅包含允许项的新字典。这可能是一个示例掩码(不过,我可以使用使生成的代码最简洁的任何格式):
mask = {
'id': True,
'name': True,
'model': {
'id': True,
'name': True,
'manufacturer': {
'name': True
}
}
}
然后函数应该返回这个:
mask = {
'id': 1,
'name': 'MY-PC',
'model': {
'id': 1,
'name': 'Surface',
'manufacturer': {
'name': 'Microsoft'
}
}
}
Python 3 中是否已经内置了一些可以帮助解决此问题的东西?看起来如果我必须手动执行此操作,它会很快变得非常难看。我找到了itertools.compress,但这似乎是用于列表的,无法处理字典的复杂性。
【问题讨论】:
-
你听说过
jq(1)吗? -
当掩码键没有匹配的数据键时会发生什么?
标签: python dictionary iterator