Werte in einer Liste sind nicht wirklich Variablen mehr. Sie werden nicht durch einen Namen in einem Namespace bezeichnet, sondern durch eine Ganzzahl, die ihre Versätze von der Vorderseite der Liste angibt (0
, 1
, ...).
Wenn Sie jede dict
von Daten mit einem Namen verknüpfen möchten, müssen Sie dies explizit tun. Je nachdem, was für das Verfolgen des Namens verantwortlich ist, gibt es zwei allgemeine Optionen: die Sammlung von Personen oder jede Person in der Sammlung. Die erste und einfachste ist die collections.OrderedDict
--- im Gegensatz zu den normalen dict
, wird es die Reihenfolge der Personen in Ihrer Liste beibehalten
from collections import OrderedDict
sam = {
'food': 'tortas',
'country': 'Mexico',
'song': 'Dream On',
}
dave = {
'food': 'spaghetti',
'country': 'USA',
'song': 'Sweet Home Alabama',
}
# The OrderedDict stores each person's name.
people = OrderedDict([('Sam', sam), ('Dave', dave)])
for name, data in people.items():
# Name is a key in the OrderedDict.
print('Name: ' + name)
for key, value in sorted(data.items()):
print(' {0}: {1}'.format(key.title(), value))
Alternativ können Sie jeder Person speichern Namen in seinem eigenen dict
... vorausgesetzt, Sie dürfen den Inhalt dieser Wörterbücher ändern. (Außerdem sollten Sie dem Data Dictionary nichts hinzufügen, das Sie dazu zwingen würde, die Daten zu ändern/zu aktualisieren, als Sie es bereits tun. Da die meisten Leute ihr Lieblingsessen oder -lied viel häufiger wechseln, als sie ihren Namen ändern wahrscheinlich sicher ist.)
sam = {
# Each dict has a new key: 'name'.
'name': 'Sam',
'food': 'tortas',
'country': 'Mexico',
'song': 'Dream On',
}
dave = {
'name': 'Dave',
'food': 'spaghetti',
'country': 'USA',
'song': 'Sweet Home Alabama',
}
people = [sam, dave]
for data in people:
# Name is a value in the dict.
print('Name: ' + data['name'])
for key, value in sorted(data.items()):
# Have to avoid printing the name again.
if 'name' != key:
print(' {0}: {1}'.format(key.title(), value))
Beachten Sie, dass, wie Sie die Daten drucken davon ab, ob Sie den Namen in der Sammlung speichern (OrderedDict
Variante) oder in jeder dict
(list
Variante Person).
Objekte haben keine Namen in diesem Sinne. Sie können etwas wie "bob = dave" tun und dann hat das gleiche Objekt zwei Namen. Wenn Sie so etwas wollen, fügen Sie eine weitere Ebene der Verschachtelung hinzu, indem Sie "dave" und "sam" die Schlüssel machen. – BrenBarn