Ich habe zwei Wörterbücher. Beispielsweise:
dict_a = {'verbs': ['run', 'go', 'eat'], 'nouns':['dog', 'cat', 'bear']}
dict_b = {'verbs': ['jump'], 'nouns': ['human']}
Ich habe eine Funktion geschrieben, die alle Elemente in jeder Liste aus dict_b übernehmen und an der richtigen Stelle in dict_a platzieren kann. (Das heißt, dict_b 'Verben' werden in dict_a 'Verben' usw. usw. eingefügt.)
Ich muss jedoch auch eine Funktion schreiben, um dieselben Wörter aus dict_b herauszunehmen, wenn sie in dict_a sind, aber ich bin irgendwie verloren. Ich habe ein paar Dinge geschrieben, aber keines davon hat funktioniert. Ich erwarte nicht, dass jemand die Arbeit für mich erledigt, aber wenn jemand einen Hinweis hat, geben Sie ... Das wäre großartig.
5 Antworten
dict_a = {'verbs': ['run', 'go', 'eat'], 'nouns':['dog', 'cat', 'bear']}
dict_b = {'verbs': ['jump'], 'nouns': ['human']}
def foo(dict_a, dict_b):
for k,v in dict_b.iteritems():
for word in v[:]:
if word in dict_a.get(k, []):
dict_b[k].remove(word)
Zunächst können Sie Diktatverständnisse verwenden, um beide Wörterbücher zusammenzuführen:
{key:dict_a[key] + dict_b[key] for key in dict_b if dict_a.has_key(key)}
Oder ohne diktiertes Verständnis:
for key in dict_b:
if dict_a.has_key(key):
dict_a[key] += dict_b[key]
Das Entfernen der Elemente aus dem dict_b
Wörterbuch ist einfach:
for key in dict_a:
if dict_b.has_key(key):
del dict_b[key]
Sie können pop
verwenden, um das inspizierte Element aus der Liste zu entfernen.
Aber könnte ich vorschlagen:
dict_a['verbs'] = dict_a['verbs'] + dict_b['verbs']
dict_a['nouns'] = dict_a['nouns'] + dict_b['nouns']
.
Eine andere Option, die vorzuziehen sein kann, ist die umgekehrte Zuordnung (und dann können Sie update
):
dict_c = {'run': 'verb', 'cat': 'noun',...}
dict_c = {'jump':'verb', 'human':'noun'}
dict_c.update(dict_d)
Wenn die Reihenfolge der Verben / Substantive nicht wichtig ist, ist es besser, anstelle Ihrer Listen Mengen zu verwenden
>>> dict_a = {'verbs': {'run', 'go', 'eat'}, 'nouns':{'dog', 'cat', 'bear'}}
>>> dict_b = {'verbs': {'jump'}, 'nouns': {'human'}}
>>> for k in dict_a:
... dict_a[k] |= dict_b[k]
...
>>> dict_a
{'verbs': set(['go', 'jump', 'run', 'eat']), 'nouns': set(['human', 'dog', 'bear', 'cat'])}
Ich bin mir nicht sicher, was der zweite Teil Ihrer Frage ist, aber es ist einfach, Elemente eines Satzes aus einem anderen zu entfernen
>>> for k in dict_a:
... dict_a[k] -= dict_b[k]
...
>>> dict_a
{'verbs': set(['go', 'run', 'eat']), 'nouns': set(['dog', 'bear', 'cat'])}
Dh. zurück zum Original dict_a
list.remove (x)
Entfernen Sie das erste Element aus der Liste, dessen Wert x ist. Es ist ein Fehler, wenn es keinen solchen Artikel gibt.
In der Python-Dokumentation finden Sie hier. Das könnte reichen, wenn nicht, werde ich einige hinzufügen!
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.