繁体   English   中英

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

[英]Check if list as value(with atleast one element) exists in dictionary and return it

我有以下字典:

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': []},
}

基本上我想从“用户”“组”中提取其中一个列表,如果它们的列表包含至少一个值。 我希望最终的 output 看起来像这样:

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

如果可能的话,列表理解会更可取。 感谢您为此付出的努力和时间。

只要“用户”或“组”不为空,我能想到的最简单的理解:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM