2016-04-27 12 views
0

Betrachten ich ein Tupel in Python habenFür jede in der Liste Python

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

ich ein numbers_dict im Wörterbuch

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

und so bekomme ich

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

Kann erstellen möchten I etwas einfacher mit der Syntax

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

?

Antwort

4

Geben Sie einfach numbersdirekt zum dict() type:

numbers_dict = dict(numbers) 

Aus der Dokumentation:

Wenn ein Positions Argument verwendet wird, und es ist ein Mapping-Objekt, ein Wörterbuch mit der erstellt wird gleiche Schlüssel-Wert-Paare wie das Mapping-Objekt. Andernfalls muss das Positionsargument ein iterierbares Objekt sein. Jedes Element im Iterablen muss selbst ein Iterable mit genau zwei Objekten sein. Das erste Objekt jedes Elements wird zu einem Schlüssel im neuen Wörterbuch und das zweite Objekt zum entsprechenden Wert.

Ihre numbers Tupel ist ein solches iterable, und jedes Element darin ist ein Paar (key, value).

Demo:

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

könnten Sie einen dictionary comprehension verwenden, aber das ist wirklich viel des Guten hier; Verwenden Sie das nur, wenn Sie für jeden Schlüssel oder Wert etwas Sinnvolleres tun. Aber aus Gründen der Vollständigkeit würde das so aussehen:

numbers_dict = {k: v for k, v in numbers} 
Verwandte Themen