2017-07-31 90 views
0

我试图更新的列表,包括对值如下:更新配对列表蟒蛇

list = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)] 

现在我想更新与N1到16值因此我竭力试图使像这样:

>>> list['n1'] = 16 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: list indices must be integers or slices, not str 

什么是使用键值类型的功能访问列表的方式?

+3

您正在寻找'dict',否则循环并根据匹配的项目进行更新。 –

+1

但我只想访问列表 –

+0

我试着用'dict',但是我的休息模块需要这个值作为'list'而不是'dict' –

回答

2

您可以使用列表理解:

>>> lst = [('n1', 1), ('n2', 2), ('n3', 3), ('n4', 4), ('n5', 5)] 
>>> lst = [('n1', 16) if 'n1' in item else item for item in lst] 
>>> lst 
[('n1', 16), ('n2', 2), ('n3', 3), ('n4', 4), ('n5', 5)] 
+0

会发生什么?我想以前的理解是相当不错的。 –

+0

@Jaffer:它是一样的,只是以交互式shell演示的形式。 –

+0

您可以添加以前的理解吗? –

1

使用dict

的dict(映射) - >从一个映射对象的 (键,值)初始化新字典对

d = dict(list) 
d['n1'] = 16 

注**请勿使用list作为变量名将覆盖内置函数list

3

将其转换为dict

myList = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)] 
myDict = dict(myList) 
myDict['n1'] = 16 

此外,这是不推荐使用list作为变量名,因为它是在python built-in function的名称。

1

您可以通过自己的位置访问列表中的项目,而不是它们的值。

如果这种更新的往往是做,你可能想使用dictionary(滚动到5.5)。在一个键值格式 字典存储数据,这样你可以通过他们的密钥访问和更新值。

您可以创建一个这样:

some_dict = dict()

然后,添加要存储,像这样的键值对:

some_dict['n1'] = 1

然后,如果你想更新由“N1”存储的值,只需使用前面的语句以类似的方式:

some_dict['n1'] = "new_value"

1

您不能映射列表中的键值对。列表只能切片。

你是幸运的,你必须有键列表,值对的元组。

您可以转换使用字典一样的(映射)其他回答。

my_list = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)] 
my_dict = dict(myList) 
my_dict ['n1'] = 16