在 python 的 for 循环中创建唯一名称列表

Posted

技术标签:

【中文标题】在 python 的 for 循环中创建唯一名称列表【英文标题】:create lists of unique names in a for -loop in python 【发布时间】:2013-01-27 00:13:58 【问题描述】:

我想在 for 循环中创建一系列具有唯一名称的列表,并使用索引来创建列表名称。这是我想做的事

x = [100,2,300,4,75]

for i in x:

  list_i=[]

我想创建空列表,例如

lst_100 = [], lst_2 =[] lst_300 = []..

有什么帮助吗?

【问题讨论】:

【参考方案1】:

不要动态命名变量。这使得与他们一起编程变得很困难。相反,使用字典:

x = [100,2,300,4,75]
dct = 
for i in x:
    dct['lst_%s' % i] = []

print(dct)
# 'lst_300': [], 'lst_75': [], 'lst_100': [], 'lst_2': [], 'lst_4': []

【讨论】:

有没有办法在保持原始x的顺序的同时做?相反,我在这里看到,在 root 的回答中,没有保留“100、2、300、4、75”的顺序。我想这是一些 dict 属性。 @Coolio2654:对。 dict 键未排序。要保留插入键的顺序,请使用collections.OrderedDict:(更改dct = --> import collections 后跟dct = collections.OrderedDict())。【参考方案2】:

使用字典来保存您的列表:

In [8]: x = [100,2,300,4,75]

In [9]: i:[] for i in x
Out[9]: 2: [], 4: [], 75: [], 100: [], 300: []

访问每个列表:

In [10]: d = i:[] for i in x

In [11]: d[75]
Out[11]: []

如果你真的想在每个标签中都有lst_

In [13]: 'lst_'.format(i):[] for i in x
Out[13]: 'lst_100': [], 'lst_2': [], 'lst_300': [], 'lst_4': [], 'lst_75': []

【讨论】:

这是我的第一个想法,你先去吧:P @F3AR3DLEGEND -- 我认为这是最 Pythonic 的方式 :) 这是字典理解吗? :-)【参考方案3】:

与其他人的 dict-solutions 稍有不同的是使用 defaultdict。它允许您通过调用所选类型的默认值来跳过初始化步骤。

在这种情况下,选择的类型是一个列表,它会在字典中为您提供空列表:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[100]
[]

【讨论】:

以上是关于在 python 的 for 循环中创建唯一名称列表的主要内容,如果未能解决你的问题,请参考以下文章

遍历 for 循环并将检索到的数据保存在每个循环的唯一 csv 文件中 | Python

PHP 不会从 for 循环在数据库中插入重复项

创建一个for循环以分块读取大数据并创建新列

在 Python 中使用 for 循环在日期列中添加前导零

如何在 for 循环中创建多个复选框?

为啥我可以在 Python for 循环中对迭代器和序列使用相同的名称?