在python中更新成对列表
我正在尝试更新由成对值组成的列表,如下所示:在python中更新成对列表,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我正在尝试更新由成对值组成的列表,如下所示: 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
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
>列表['n1']=16
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:列表索引必须是整数或片,而不是str
使用键值类功能访问列表的方法是什么?使用dict
dict(mapping)->从映射对象的
(键、值)对
注意**不要使用
list
作为变量名,它将覆盖内置函数list
将其转换为dict
myList = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)]
myDict = dict(myList)
myDict['n1'] = 16
另外,不建议使用
list
作为变量名,因为它是python中的a的名称。您可以使用列表:
>>> 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)]
您可以按项目的位置而不是值访问列表中的项目 如果经常进行此类更新,您可能需要使用(滚动至5.5)。 以键值格式存储数据的字典,您可以通过键值访问和更新数据。 您可以这样创建一个:
some\u dict=dict()
然后,添加要存储的键值对,如下所示:
some_dict['n1']=1
然后,如果要更新“n1”存储的值,只需以类似的方式使用前面的语句:
some_dict['n1']=“new_value”
您无法将列表映射到键值对。列表只能被切片
幸运的是,您有一个包含键、值对作为元组的列表
您可以使用dict(映射)将其转换为其他已回答的格式
my_list = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)]
my_dict = dict(myList)
my_dict ['n1'] = 16
您正在查找
dict
,否则将循环并根据匹配的项进行更新。但我只想访问列表我尝试了dict
,但我的rest模块需要该值作为list
,而不是dict
发生了什么?我想之前的理解很好。@Jaffer:也一样,只是以一个交互式shell演示的形式。你能添加之前的理解吗?我不知道索引
my_list = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)]
my_dict = dict(myList)
my_dict ['n1'] = 16