könnten Sie ein list comprehension verwenden:
my_dict = {'fruit':'apple','colour':'blue','meat':'beef'}
print [key for key, value in my_dict.items() if value == 'apple']
Der obige Code ist fast genau das, wh an dem Sie wollen:
Drucktaste, dict [key] == ‚Apfel‘
Die Liste Verständnis wird von Ihrem Wörterbuch der durch alle Schlüssel, Wert-Paare gegeben gehen items
method, und machen ein neue Liste aller Schlüssel mit dem Wert 'apple'
Wie Niklas darauf hingewiesen hat, funktioniert dies nicht, wenn Ihre Werte möglicherweise Listen sein könnten. Sie müssen in diesem Fall vorsichtig sein, nur in
seit 'apple' in 'pineapple' == True
zu verwenden. Wenn man also einen Listenverständnisansatz verfolgt, ist eine Typüberprüfung erforderlich.So können Sie eine Hilfsfunktion wie verwenden:
def equals_or_in(target, value):
"""Returns True if the target string equals the value string or,
is in the value (if the value is not a string).
"""
if isinstance(target, str):
return target == value
else:
return target in value
Dann unten die Liste Verständnis funktionieren würde:
my_dict = {'fruit':['apple', 'banana'], 'colour':'blue'}
print [key for key, value in my_dict.items() if equals_or_in('apple', value)]
Seien Sie gewarnt, dass es keine Einschränkung gibt, dass die 'Werte' im' dict' eindeutig sind, nur die 'Schlüssel'. Was passiert, wenn Sie in Ihrem Diktat zwei identische Schlüssel haben? – Hooked
@Hooked Meinst du "zwei identische Werte"? –
@ root45 ja ich meine identische "Werte" nicht "Schlüssel", tut mir leid. Etwas wie: 'A = {1: 'foo', 2: 'foo'}'. Was ist das Gegenteil von 'foo', das hier zurückkommen soll? – Hooked