2016-04-27 59 views
0

考慮我有在Python對於每一個列表的Python

numbers = (('One', 1), ('Two', 2), ('Three', 3), ('Four', 4)) 

一個元組,我想創建在字典中的numbers_dict

numbers_dict = {} 
for number in numbers: 
    numbers_dict[number[0]] = number[1] 

,所以我得到

numbers_dict = { 
    'One': 1, 
    'Two': 2, 
    'Three': 3, 
    'Four': 4, 
} 

我可以使用語法更簡單些

numbers_dict = [n[0] : n[1] for n in numbers] 

回答

4

只是傳遞numbers直接dict() type

numbers_dict = dict(numbers) 

從文檔:

如果一個位置參數給出,這是一個映射對象,詞典與所創建的與映射對象相同的鍵值對。否則,位置參數必須是可迭代的對象。迭代器中的每個項目本身必須是一個具有兩個對象的迭代器。每個項目的第一個對象成爲新字典中的一個鍵,第二個對象成爲相應的值。

你的numbers元組是這樣一個迭代,它的每個元素都是一個(key, value)對。

演示:

>>> numbers = (('One', 1), ('Two', 2), ('Three', 3), ('Four', 4)) 
>>> dict(numbers) 
{'One': 1, 'Four': 4, 'Three': 3, 'Two': 2} 

你可以使用一個dictionary comprehension過,但是那真的矯枉過正這裏;只有在你爲每個鍵或值做更有意義的事情時才使用它。但爲了完整起見,看起來像這樣:

numbers_dict = {k: v for k, v in numbers} 
相關問題