2017-07-31 86 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