2017-03-26 5 views
2

ich mit Python gerade erst begonnen, und jetzt versuche ich, Wörterbuch Verständnis, aber ich weiß nicht bekommen, das Verhalten des folgenden Codes zu verstehen:Nicht in der Lage Code Verhalten zu verstehen - Python

data = [ 
      {'id': 12, 'data': '01'}, 
      {'id': 10, 'data': '05'}, 
      {'id': 11, 'data': '07'}, 
      ] 
      { d['id']:d for d in data }.values() 

Ausgang:

dict_values([{'id': 12, 'data': '01'}, {'id': 10, 'data': '05'}, {'id': 11, 'data': '07'}])

bitte erläutern Sie die Ausgabe für den genannten Code. Warum druckt es ein zweites Schlüsselwertpaar jedes Datenwörterbuchs, d. H. "Daten": "01" und so weiter.

Antwort

2

die„Daten“Wert dieses Elements ist Sie erstellen Liste der dict

data = [ {‘ ID ': 12,' Daten ':' 01 '}, {' ID ': 10,' Daten ':' 05 '}, {' ID ': 11,' Daten ':' 07 '}, ]

Wenn wir erste Aussage geteilt, dann werden wir folgendes Ergebnis.

{d [ 'id']: d für d in Daten}

{10: { 'data': '05', 'id': 10}, 11: { 'data': '07' , 'id': 11}, 12: { 'data': '01', 'id': 12}}

d ist zuerst dict & Sie neue dict mit d [schaffen id]

d [ 'id']: D -> 10: { 'data': '05', 'id': 10}

values ​​(): Diese Methode gibt eine Liste aller in einem gegebenen Wörterbuch verfügbaren Werte zurück.

In Ihrem Beispiel sind 3 dict Werte.

Deshalb erhalten Sie Ergebnis wie.

[{'daten': '05', 'id': 10}, {'daten': '07', 'id': 11}, {'daten': '01', 'id' : 12}]

+1

Sie sollten die Codeformatierung für die Codeteile verwenden. – idjaw

2

Daten sind ein Array, das 3 Wörterbücher enthält, von denen jedes zwei Schlüssel hat: "id" und "data".

Was Sie Python fragen ist:

{ d['id']:d for d in data } 

„Baue mir ein Dictionnary, die für jedes Element meiner Datenfeld 1 Paar Schlüssel/Wert enthält Jeder Schlüssel sollte das sein.‚Id‘Wert dieses Elements B: und jeder Wert sollte das Element von d selbst "

In [6]: c={ d['id']:d["data"] for d in data} 

In [7]: c 
Out[7]: {10: '05', 11: '07', 12: '01' 

Was möchten Sie wahrscheinlich zu tun ist," sein Erstellen Sie ein Wörterbuch, das 1 Paar Schlüssel/Wert für jedes Element meines Datenarrays enthält. Jeder Schlüssel sollte der „id“ Wert dieses Elements sein, und jeden Wert sollte "

Verwandte Themen