如何访问成对列表中每对的元素?
我有一个叫做 pairs 的列表。
pairs = [("a", 1), ("b", 2), ("c", 3)]
我可以这样访问里面的元素:
for x in pairs:
print x
这样会输出类似下面的内容:
('a', 1) ('b', 2) ('c', 3)
但是我想像在 C++ 中那样,访问每一对中的每个元素。在 C++ 中,如果我们使用 pair<string, int>
,我们可以通过 x.first
和 x.second
来访问第一个元素和第二个元素。例如:
x = make_pair("a",1)
x.first= 'a'
x.second= 1
我该如何在 Python 中做到这一点呢?
6 个回答
2
我觉得你可能不太喜欢,但我为Python做了一个配对(pair)功能 :) 使用起来和C++有点像。
pair = Pair
pair.make_pair(value1, value2)
或者
pair = Pair(value1, value2)
这是源代码,pair_stl_for_python
2
当你写 pair[0]
的时候,你得到的是 ("a", 1)
。括号里的东西叫做元组,元组和列表一样,都是用来存放多个数据的集合。所以你可以通过在它的名字后面加上 [0]
或 [1]
来访问这个元组里的第一个或第二个元素。要获取 pair
中第一个元素的第一个值,你只需要写 pair[0][0]
。如果你想要第三个元素的第二个值,那就是 pair[2][1]
。
13
一个 2-tuple
就是一对东西。你可以这样访问它的第一个和第二个元素:
x = ('a', 1) # make a pair
x[0] # access 'a'
x[1] # access 1
16
如果你想使用名字来表示数据,可以试试用命名元组(namedtuple):
from collections import namedtuple
Pair = namedtuple("Pair", ["first", "second"])
pairs = [Pair("a", 1), Pair("b", 2), Pair("c", 3)]
for pair in pairs:
print("First = {}, second = {}".format(pair.first, pair.second))
49
使用元组解包:
>>> pairs = [("a", 1), ("b", 2), ("c", 3)]
>>> for a, b in pairs:
... print a, b
...
a 1
b 2
c 3
另请查看:在for循环中的元组解包。