gpt4 book ai didi

python - Python 列表中的命名索引偏移量?

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:33 25 4
gpt4 key购买 nike

是否有一种很好的 Pythonic 方式来命名列表中的索引偏移量?

我有一个列表列表,每个列表代表我的脚本将设置的一个帐户:

#                        un       pw        doit   admin
ExtraAccounts = [["Fred", "fredpw1", True, False],
["Jane", "ibjane", True, True],
["Wen", "35syzwen", False, True],
]

所以用户名“Fred”将设置为密码“fredpw1”,并且不会成为管理员。等等

每个子列表的索引[0]是用户名,[1]是密码,[3]是帐户是否是管理员。

这导致代码如下:

for acct in ExtraAccounts:
if acct[2]:
setupAccount(acct[0], acct[1], acct[3])

很难读懂,因为 acct[0]、acct[1]、acct[2] 等代表的内容远非显而易见。

我想到了使用命名元组,但是我还需要在程序中更改列表的内容,像这样:

for acct in ExtraAccounts:
acct[2] = aComplicatedFunction(acct[0])

所以我拒绝使用命名元组,因为它们是不可变的。

我想出了一个解决方法:

User  = 0 # index offsets
Pass = 1
Doit = 2
Admin = 3
# un pw doit admin
ExtraAccounts = [["Fred", "fredpw1", True, False],
["Jane", "ibjane", True, True],
["Wen", "35syzwen", False, True],
]

for acct in ExtraAccounts:
acct[Doit] = aComplicatedFunction(acct[User])

for acct in ExtraAccounts:
if acct[Doit]:
setupAccount(acct[User], acct[Pass], acct[Admin])

...但我很确定这不是执行此操作的“正确方法”。

什么是更好的方法?

最佳答案

要上课吗?

class Account:
def __init__(self, username, password, doit, admin):
self.username = username
self.password = password
self.doit = doit
self.admin = admin


extra_accounts = [
# un pw doit admin
Account("Fred", "fredpw1", True, False),
Account("Jane", "ibjane", True, True),
Account("Wen", "35syzwen", False, True),
]

for acct in extra_accounts:
acct.doit = a_complicated_function(acct.username)

for acct in extra_accounts:
if acct.doit:
setup_account(acct.username, acct.password, acct.admin)

关于python - Python 列表中的命名索引偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52919736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com