检查字典中是否存在列表形式的值(至少有一个元素)并返回它



我有以下字典:

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"]]

相关内容

最新更新