我有以下字典:
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 = [# 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]
]
如果可能,串列理解會更可取。感謝您為此付出的努力和時間。
uj5u.com熱心網友回復:
我能想到的最簡單的理解,只要“用戶”或“組”不為空:
[v['users'] v['groups'] for v in dict1.values()]
uj5u.com熱心網友回復:
我認為可以使用串列理解,但非常難以理解。
這將是我的方法:
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)
uj5u.com熱心網友回復:
使用串列理解并過濾掉“用戶”和“組”都為空的情況:
l1 = [v["users"] v["groups"] for _, v in dict1.items() if v["users"] v["groups"]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373957.html
下一篇:在VB.NET中將具有重復值的DataTable轉換為Dictionary(ofString,List(ofObject))的正確方法
