Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Wörterbuch: Gibt es ein fortgeschrittenes Gameplay, von dem ich nicht weiß, wie man es macht?

Python-Wörterbuch: Gibt es ein fortgeschrittenes Gameplay, von dem ich nicht weiß, wie man es macht?

WBOY
WBOYnach vorne
2023-04-11 23:58:081566Durchsuche

Python-Wörterbuch: Gibt es ein fortgeschrittenes Gameplay, von dem ich nicht weiß, wie man es macht?


Wörterbuch aus Sequenz generieren

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}

Standardwert des Schlüssels

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)

Schlüssel und Wert austauschen

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()}

Sequenzänderung und Initialisierung

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 .

Schlüssel, Set-Operation von Elementen

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.

Sortieren Sie das Wörterbuch nach Schlüssel oder Wert.

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}

Mehrere Wörterbuchsortierung

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen