通过遍历列表列表创建混合python数据结构

2024-05-13 18:57:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将数据提供给一个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'])

很明显,create user负载是一个字典列表,它依次由字典delete负载只是一个简单的名称列表。你知道吗

我的示例输入数据是一个列表列表,如下所示:

[['NEW','kylie','OPERATOR','/sbin/nologin'],['DELETE', 'ron', 'ADMINISTRATOR', '/sbin/bash'],['NEW','jessie','GUEST','sbin/nologin']]

需要注意的几点:

  1. 新建是指要创建的用户,删除是指要删除的用户

  2. 密码是加密的布尔值,密码和分区值总是固定的,不需要从输入中获取,与示例中相同。

迭代输入数据以创建此有效负载的最佳方法是什么?你知道吗


Tags: 数据nameapi列表字典createpassworddelete
1条回答
网友
1楼 · 发布于 2024-05-13 18:57:44

只需迭代输入数据,如下所示

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
    }

相关问题 更多 >