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

时间:2016-10-25 17:27:43

标签: python wxpython

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' )]

如何以这种格式添加到此列表? E.g:

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])

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

注意:这个问题最简单的答案是

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

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

答案很长。

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

Tuple数据结构在Python中广泛使用,tuplelist之间的主要区别在于,您无法更改tuple内的内容,而你可以在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')]

希望这会有所帮助。