如何在python for循环中构建整数+字符串的元组数组变量



手动构建的变量STAFFLIST在django数据库中作为PositiveSmallIntegerField列出的选项列表工作。

STAFF1 = 1
STAFF2 = 2
STAFF3 = 3
STAFFLIST = (
(STAFF1, _('John Doe')),
(STAFF2, _('Lisa Beauty')),
(STAFF3, _('Harry Potter')),
)

此变量的打印工作方式如下:

>>>print(STAFFLIST[1])
(2, 'Lisa Beauty')
>>> print(STAFFLIST[1][0])
2
>>> print(STAFFLIST[1][1])
Lisa Beauty
>>>

如何根据实际的人员列表在for循环中自动构建此变量?我尝试了下面这样的东西,但没有成功:

from django.contrib.auth.models import User
from django.utils.translation import gettext as _
staff = User.objects.filter(is_staff=True)
idx=0
for stf in staff:
STAFFLIST[idx] = (stf.id, _(stf.first_name + ' ' + stf.last_name))
idx=idx+1

我得到的错误像:

TypeError: 'str' object does not support item assignment

我相信,我的问题是python数据类型的知识水平低。目前,我正在尝试使用元组数据类型并在其中存储字符串。

我已经解决了for循环的问题。折叠代码可以工作并构建与手动定义的变量相同的元组数组:

from django.contrib.auth.models import User
from django.utils.translation import gettext as _
staff = User.objects.filter(is_staff=True)
idx=0
for stf in staff:
if idx == 0:
STAFFLIST = ((stf.id, _(stf.first_name + ' ' + stf.last_name)),)
idx=1
else:
STAFFLIST = STAFFLIST + ((stf.id, _(stf.first_name + ' ' + stf.last_name)),)

最新更新