将 3 个字符串添加到列表中的相同索引

Adding 3 strings to the same index in a list

this wxPython 教程中,我偶然发现了这种格式化列表的方式:

packages = [('jessica alba', 'pomona', '1981'), ('sigourney weaver', 'new york', '1949'),
    ('angelina jolie', 'los angeles', '1975'), ('natalie portman', 'jerusalem', '1981'),
    ('rachel weiss', 'london', '1971'), ('scarlett johansson', 'new york', '1984' )]

如何以这种格式添加到此列表? 例如:

packages.append[(item1, item2, item3)]

该列表用于向 wx.ListCtrl 小部件添加内容,如下所示:

for i in packages:
            index = self.list.InsertStringItem(sys.maxint, i[0])
            self.list.SetStringItem(index, 1, i[1])
            self.list.SetStringItem(index, 2, i[2])

在此先感谢您的帮助。

TL;DR:这个问题最简单的答案是

output = [(item[0],item[1],item[2]) for item.split(",") in someBigList]

其中 item 是逗号分隔的字符串。

长答案。

Python 能够在其可迭代数据结构中存储任何东西(是的,任何东西!)。 您可以在列表中存储列表,在列表中存储字典,反之亦然,一个对象或一个元组或一个集合。

Tuple 数据结构在 Python 中广泛使用,tuplelist 之间的主要区别在于,您不能更改 [= =14=],而您可以在 list 中做到这一点。不变性只是使用元组的优势之一。还有很多优点。

假设您有以上数据以某种形式出现,您必须对所有这些数据进行分组。 假设它们是由逗号分隔的字符串,就像在 csv 中一样。

with open("/tmp/test.csv","r") as readFl:
    line = readFl.readlines()

lines
Out[5]: 
['jessica alba, pomona, 1981',
 'sigourney weaver, new york, 1949',
 'angelina jolie, los angeles, 1975',
 'natalie portman, jerusalem, 1981',
 'rachel weiss, london, 1971',
 'scarlett johansson, new york, 1984']

现在需要访问列表行的每个元素中的每个元素。 为此,我们使用元组列表。

output = []
for line in lines:
    row = tuple(line.split(",")) # by default, split() returns a list, we cast it to a tuple.
    output.append(row)


output
Out[16]: 
[('jessica alba', 'pomona', '1981'),
 ('sigourney weaver', 'new york', '1949'),
 ('angelina jolie', 'los angeles', '1975'),
 ('natalie portman', 'jerusalem', '1981'),
 ('rachel weiss', 'london', '1971'),
 ('scarlett johansson', 'new york', '1984')]

希望对您有所帮助。