240 Stimmen

Konvertieren Sie ein namedtuple in ein Dictionary

Ich habe eine benannte Tupelklasse in Python

class Town(collections.namedtuple('Town', [
    'name',
    'population',
    'coordinates',
    'population',
    'capital',
    'state_bird'])):
    # ...

Ich möchte Instanzen von Town in Wörterbücher konvertieren. Ich möchte nicht starr an die Namen oder Anzahl der Felder in einer Town gebunden sein.

Gibt es eine Möglichkeit, es so zu schreiben, dass ich weitere Felder hinzufügen oder ein völlig anderes benanntes Tupel übergeben und ein Wörterbuch erhalten könnte.

Da die ursprüngliche Klassendefinition in jemand anderem Code liegt, kann ich sie nicht ändern. Daher muss ich eine Instanz einer Town nehmen und in ein Wörterbuch konvertieren.

-5voto

Andre Odendaal Punkte 749

Python 3. Weisen Sie einem beliebigen Feld im Wörterbuch den erforderlichen Index zu, ich habe 'name' verwendet.

import collections

Town = collections.namedtuple("Town", "name population coordinates capital state_bird")

town_list = []

town_list.append(Town('Stadt 1', '10', '10.10', 'Hauptstadt 1', 'Türkei'))
town_list.append(Town('Stadt 2', '11', '11.11', 'Hauptstadt 2', 'Ente'))

town_dictionary = {t.name: t for t in town_list}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X