Heim > Artikel > Backend-Entwicklung > Python-Wörterbuch: Gibt es ein fortgeschrittenes Gameplay, von dem ich nicht weiß, wie man es macht?
Wir konvertieren die folgende Sequenz in den Diktattyp.
lst = [('a', 1), ('b', 2), ('c', 3)]
Gemeinsame Schreibmethode
for k, v in lst: dic[k] = v
Mehr pythonische Schreibmethode
Verwenden Sie die Wörterbuchableitung, um schnell ein Wörterbuch zu erstellen.
{k: v for k, v in lst}
Wenn der angegebene Schlüssel nicht existiert, setzen Sie den Wert auf 0.
Übliche Schreibweise
if key not in dct: dct[key] = 0
Pythonische Schreibweise
dct[key] = dct.get(key, 0)
Gewöhnliche Schreibweise
dic = {'Python': 1, 'Java': 2} new_dic = {} for k, v in dic.items(): new_dic[v] = k
Mehr pythonische Schreibweise
dic = {'Python': 1, 'Java': 2} new_dic = {v: k for k, v in dic.items()}
Beispieldaten
lst = [('a', 1), ('b', 2), ('c', 3)] dic = {'a': [0]}
Wenn wir Sie müssen dies basierend auf lst tun. Aktualisieren Sie die Daten in dic. Wenn der Schlüssel vorhanden ist, fügen Sie den Wert am Ende der ursprünglichen Sequenz hinzu. Andernfalls initialisieren Sie ihn und speichern Sie ihn mit der Sequenz.
Normale Schreibmethode
for key, value in lst: if key in dic: dic[key].append(value) else: dic[key] = [value]
Mehr pythonische Schreibmethode
for (key, value) in lst: group = dic.setdefault(key, []) group.append(value) # dic:{'a': [0, 1], 'b': [2], 'c': [3]}
setdefault(key, default) ermittelt zunächst, ob der Schlüssel existiert, und gibt dct[key] zurück dct[key] zu [] und return .
Wenn wir nun die Zuordnungsinformationen der Schnittmenge der Schlüssel zweier Wörterbücher erhalten müssen.
Allgemeine Schreibmethode
dic1 = {'Python': 1, 'Java': 2, 'C': 3} dic2 = {'Python': 3, 'Java': 2, 'C++': 1} new_dic = {} for k, v in dic1.items(): if k in dic2.keys(): new_dic[k] = v print(new_dic) # {'Python': 1, 'Java': 2}
Mehr pythonische Schreibmethode
dic1 = {'Python': 1, 'Java': 2, 'C': 3} dic2 = {'Python': 3, 'Java': 2, 'C++': 1} print({k: dic1[k] for k in dic1.keys() & dic2.keys()}) # {'Python': 1, 'Java': 2}
Hier verwenden dic1.keys() und dic2.keys()keys(), um Set-Operationen auszuführen, und items() können auch Set-Operationen ausführen.
Wenn wir jetzt die gleichen Schlüssel- und Wertteile in zwei Wörterbüchern erhalten möchten
dic1 = {'Python': 1, 'Java': 2, 'C': 3} dic2 = {'Python': 3, 'Java': 2, 'C++': 1} print(dic1.items() & dic2.items()) # {('Java', 2)}
nutzen Sie flexibel die Funktionen von Schlüssel- und Item()-Set-Operationen, um schnell den gewünschten Inhalt zu extrahieren.
Verwenden Sie die Funktion sorted(), um den Schlüssel oder Wert schnell zu sortieren.
dic = {'a': 2, 'b': 1, 'c': 3, 'd': 0} lst1 = sorted(dic.items(), key=lambda x: x[0], reverse=False) # [('a', 2), ('b', 1), ('c', 3), ('d', 0)] lst2 = sorted(dic.items(), key=lambda x: x[1], reverse=False) # [('d', 0), ('b', 1), ('a', 2), ('c', 3)] print('按照键降序:', {key: value for key, value in lst1}) print('按照值降序:', {key: value for key, value in lst2}) # 按照键降序: {'a': 2, 'b': 1, 'c': 3, 'd': 0} # 按照值降序: {'d': 0, 'b': 1, 'a': 2, 'c': 3}
Wenn eine Sequenz mehrere Wörterbücher enthält, müssen diese Wörterbücher nun nach Bedingungen sortiert werden. Dies kann auch mit der Funktion sorted() erreicht werden.
dict_list = [ {'letter': 'B', 'number': '2'}, {'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '1'} ] # 按 letter 排序 print(sorted(dict_list, key=lambda dic: dic['letter'])) # 按 letter, number 排序 print(sorted(dict_list, key=lambda dic: (dic['letter'], dic['number']))) # [{'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '2'}, {'letter': 'B', 'number': '1'}] # [{'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '1'}, {'letter': 'B', 'number': '2'}]
Wenn Sie itemgetter() kennen, kann der obige Code natürlich geändert werden und die Ausführungsgeschwindigkeit wird schneller.
from operator import itemgetter print(sorted(dict_list key=itemgetter('letter'))) print(sorted(dict_list, key=itemgetter('letter', 'number')))
itemgetter() ruft den Wert nicht ab, sondern definiert eine Funktion, über die er auf das Zielobjekt angewendet wird.
Das obige ist der detaillierte Inhalt vonPython-Wörterbuch: Gibt es ein fortgeschrittenes Gameplay, von dem ich nicht weiß, wie man es macht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!