@steveO_O: Allgemeine Anmerkungen zum gezeigten Quelltext:
Wenn man Schlüssel *und* Wert aus einem Wörterbuch in einer Schleife braucht, dann sollte man gleich über diese Paare iterieren und nicht nur über den Schlüssel:
Code: Alles auswählen
def is_in_values(dictionary_one):
bags = []
for key, value in dictionary_one.items():
if SEARCH_WORD in value:
bags.append(key)
return bags
Und bei diesem Code drängt sich eine „list comprehension“ geradezu auf:
Code: Alles auswählen
def is_in_values(dictionary_one):
return [
key for key, value in dictionary_one.items() if SEARCH_WORD in value
]
Gilt auch für `bag_check()`:
Code: Alles auswählen
def bag_check(item, dictionary_one):
bags_output = [
key for key, value in dictionary_one.items() if item in value
]
print("bags_ouput", bags_output)
return bags_output
Wobei die Funktionen nahezu das gleiche machen, nur mit anderen Werten. Das könnte man also zu einer Funktion zusammenfassen.
In der `main()`-Funktion begehst Du neben dem schon genannten Fehler noch einen weiteren: Man darf Datenstrukturen über die man gerade iteriert im allgemeinen nicht verändern. Und im besonderen ist das entfernen von Elementen aus Listen vor oder genau an dem Punkt, an dem sich der Iterator gerade befindet ein Problem, weil dann Elemente übersprungen werden in der Schleife. Beispiel:
Code: Alles auswählen
In [334]: items = list(range(10))
In [335]: for item in items:
...: print(item)
...: if item == 5 or item == 6:
...: items.remove(item)
...:
0
1
2
3
4
5
7
8
9
In [336]: items
Out[336]: [0, 1, 2, 3, 4, 6, 7, 8, 9]
Die 6 ist immer noch da, weil die nie geprüft wurde.