我正在尝试将包含对值的列表更新为:
>>> 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.所以我试着这样做:
sample()
使用键值类型的功能访问列表的方法是什么?
答案 0 :(得分: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 :(得分: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)]
答案 2 :(得分:1)
使用dict
dict(mapping) - &gt;从映射对象初始化的新字典 (键,值)对
d = dict(list)
d['n1'] = 16
注意**不要使用list
作为变量名称,它将覆盖内置函数list
。
答案 3 :(得分:1)
您可以按位置访问列表中的项目,而不是按其值访问。
如果经常进行此类更新,您可能需要使用 dictionary(滚动到5.5)。 字典以键值格式存储数据,以便您可以通过键访问和更新值。
您可以创建一个:
some_dict = dict()
然后,添加您要存储的键值对,如下所示:
some_dict['n1'] = 1
然后,如果您想更新'n1'存储的值,只需以类似的方式使用前一个语句:
some_dict['n1'] = "new_value"
答案 4 :(得分:1)
您无法将列表映射到键值对。列表只能被切片。
您很幸运,您的列表中包含键,值对作为元组。
您可以使用dict(映射)转换相同的内容,而其他人已经回答。
my_list = [('n1',1),('n2',2),('n3',3),('n4',4),('n5',5)]
my_dict = dict(myList)
my_dict ['n1'] = 16