簡體   English   中英

通過遍歷列表列表來創建混合的python數據結構

[英]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']]

需要注意的幾點:

  1. NEW表示要創建的用戶,DELETE表示要刪除的用戶

  2. 密碼是加密的布爾值,密碼和分區值始終是固定的,不需要從輸入中獲取,並且與示例中的相同。

遍歷我的輸入數據以創建此有效負載的最佳方法是什么?

像這樣迭代輸入數據

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM