我有以下字典:
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': []},
}
基本上,我想从‘users’或"groups">中提取其中一个列表,如果它们的列表至少包含一个值。我希望最终输出看起来像这样:
l1 = [# Extracted list as value from 'group' key from Diacto Group key as users key was blank
# list.
[360305499],
# Extracted list as value from 'users' key from Diacto People key as groups key was
# blank list.
[326197441, 1293859642]
]
如果可能的话,列表理解会更可取。感谢您为此付出的努力和时间。
我能想到的最简单的理解,只要"users"或"groups"不为空:
[v['users']+v['groups'] for v in dict1.values()]
我认为列表理解是可能的,但非常难以理解。
这将是我的方法:
l1 = []
for k in dict1:
if len(dict1[k]['users']) > 0:
l1.append(dict1[k]['users'])
if len(dict1[k]['groups']) > 0:
l1.append(dict1[k]['groups'])
print(l1)
使用列表理解并过滤掉两个";用户";以及";组";为空:
l1 = [v["users"]+v["groups"] for _, v in dict1.items() if v["users"]+v["groups"]]