Python如何从嵌套字典中提取users或groups字段的非空列表
实现代码
dict1 = {'Diacto Group': {'id': 7547, 'type': 'user', 'name': 'Diacto Group', 'filters': [{'column': 'Core Area', 'values': ['Missiles & Aviation Technology'], 'operator': 'EQUALS', 'not': False}], 'users': [], 'virtualUsers': [], 'groups': [360305499]}, 'Diacto People': {'id': 7548, 'type': 'user', 'name': 'Diacto People', 'filters': [{'column': 'Core Area', 'values': ['Aircraft Company', 'Aviation Technology'], 'operator': 'EQUALS', 'not': False}], 'users': [326197441, 1293859642], 'virtualUsers': [], 'groups': []}, } # 列表推导式实现 l1 = [v['users'] if v['users'] else v['groups'] for v in dict1.values()] print(l1)
运行输出:
[[360305499], [326197441, 1293859642]]
逻辑说明
- 遍历
dict1所有内层嵌套字典值 - 对每个内层字典,优先判断
users字段是否为非空列表:是就直接取users,否则取groups字段 - 如果需要兼容
users和groups都为空的场景,可以加过滤条件,调整为:
l1 = [v['users'] if v['users'] else v['groups'] for v in dict1.values() if v['users'] or v['groups']]
该写法会自动跳过两个字段都为空的外层条目。
内容的提问来源于stack exchange,提问作者Aztec-3x5
相关产品推荐
相关产品推荐

