[英]Creating a mixed python data structure by iterating over a list of lists
我需要將數據提供給API,該API可以從系統中創建或刪除用戶。有效負載的語法如下:
b.User.create([{'user': {'name': 'kylie','full_name': 'kylie'},
'password': {'is_encrypted': True, 'password': 'letmein'},
'perms': [{'partition': '/Common', 'role': 'USER_ROLE_GUEST'}],
'login_shell': '/sbin/nologin'}])
b.User.delete(['ron'])
顯而易見,創建用戶有效負載是詞典列表,而詞典又由詞典組成。刪除有效負載只是名稱的簡單列表。
我的樣本輸入數據是一個列表列表,如下所示:
[['NEW','kylie','OPERATOR','/sbin/nologin'],['DELETE', 'ron', 'ADMINISTRATOR', '/sbin/bash'],['NEW','jessie','GUEST','sbin/nologin']]
需要注意的幾點:
NEW表示要創建的用戶,DELETE表示要刪除的用戶
密碼是加密的布爾值,密碼和分區值始終是固定的,不需要從輸入中獲取,並且與示例中的相同。
遍歷我的輸入數據以創建此有效負載的最佳方法是什么?
像這樣迭代輸入數據
data = [['NEW', 'kylie', 'OPERATOR', '/sbin/nologin'],
['DELETE', 'ron', 'ADMINISTRATOR', '/sbin/bash'],
['NEW', 'jessie', 'GUEST', 'sbin/nologin']]
for record in data:
if record[0] == 'NEW':
b.USER.create([get_user_object(*record[1:])])
else:
b.USER.delete([record[1]])
您可以像這樣實現get_user_object
def get_user_object(name, role, shell):
return {
'user': {
'name': name,
'full_name': name
},
'password': {
'is_encrypted': True,
'password': 'letmein'
},
'perms': [{
'partition': '/Common',
'role': role
}],
'login_shell': shell
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.