如何在Python中创建任意数量的字典/列表(具有不同名称)?

0 投票
2 回答
1170 浏览
提问于 2025-04-18 11:49

我想创建一些像这样的#arb字典:(arb = 2或者4或者其他数字)

for n in xrange(0, arb):
    dictn = {}

但是我发现Python不允许在等式的左边使用变量……所以我有点困惑。我该如何创建#arb字典或列表,并且这些字典或列表有不同的名字呢?比如说从list1listn,或者从dict1dictn

我知道这听起来可能有点傻,但我对编程不太在行,真的很困惑。任何建议都很有帮助,谢谢!

2 个回答

0

创建一个字典容器,每个键都是变量的名字。试试这个

container_dict = {}
arb= 4
for n in xrange(0, arb):
    #for dicts
    container_dict["dict%i" % n] = {}
    #for lists
    container_dict["list%i" % n] = []

%i会把索引插入到字符串中,所以键会从0开始编号,一直到任意的数字减去1

>>> container_dict
{'dict1': {}, 'dict0': {}, 'dict3': {}, 'dict2': {}, 'list1': [], 'list0': [], 'list3': [], 'list2': []}
2

这样创建变量其实没有太大意义。如果你需要一次性动态地创建多个字典或者列表,最好把它们放在一个容器里。用列表就可以,或者如果你已经有了键的想法,那为什么不使用字典呢?

举个例子:

>>> arb = 4
>>> dicts = [{} for _ in range(arb)]
>>> print(dicts)
[{}, {}, {}, {}]

或者可以用字典里面再放字典:

>>> arb = 4
>>> dicts = {"dict_{}".format(i): {} for i in range(arb)}
>>> print(dicts)
{'dict_0': {}, 'dict_1': {}, 'dict_2': {}, 'dict_3': {}}

撰写回答