2016-07-12 5 views
0

Ich habe das folgende Wörterbuch. Für Objekte, die den Wert ['FAIL', 'PASS'] haben, möchte ich sie nur durch 'PASS' ersetzen.Ersetze Listenwert im Python-Wörterbuch

Dict = [('Main Menu-046', ['PASS']), ('Main Menu-047', ['FAIL']), ('Main Menu-044', ['FAIL', 'PASS']), ('Main Menu-045', ['PASS']), ('Main Menu-042', ['FAIL', 'PASS']), ('Main Menu-043', ['FAIL']) 

Ich habe versucht, die folgenden:

if "FAIL" in [x for v in Dict.values() for x in v]: ## if true 
    Dict.values == "PASS" 
+1

'List = {}'. .. – bernie

+6

Derzeit Dict ist eine Liste von Tupeln und kein Wörterbuch –

+0

Es gibt eine Klammer im ersten Ausschnitt fehlt. Ihr 'Dict' sieht jedoch aus wie eine Liste von' Tupeln'. Außerdem sollten Sie eine Variable nicht als DataType benennen ('Dict' ist ein Python-Datentyp). Hast du ein Wörterbuch oder eine Tupelliste? – albert

Antwort

1

Wenn ich Ihre Frage richtig verstanden, Sie ['FAIL', 'PASS'] mit ['PASS']

processed_list = [(x[0], ["PASS"] if "PASS" in x[1] else x[1]) for x in Dict] 

Ergebnisse ersetzen möchten:

[('Main Menu-046', ['PASS']), 
('Main Menu-047', ['FAIL']), 
('Main Menu-044', ['PASS']), 
('Main Menu-045', ['PASS']), 
('Main Menu-042', ['PASS']), 
('Main Menu-043', ['FAIL'])] 
0

Sie haben nicht eine dict verwenden, sondern eine Liste von Paar (Main, [PASS/FAIL])

Wenn Sie ein Wörterbuch möchten, können Sie es durch d = { key:value, key:value ... } oder durch d = dict() erstellen und Artikel hinzufügen, indem Sie einfach d['newkey'] = value

Plus, wenn Sie möchten, können Sie Standardwert wie diese kann gelten:

from collections import defaultdict 

d = defaultdict(lambda : defaultvalue) 

Wenn Sie Ihr dict haben werden, versuchen, eine Schleife wie:

for key in d.keys(): 
    if d[key] == 'FAIL': # or if 'FAIL' in d[key] if d[key] is a list like ['FAIL'] 
    d[key] = 'PASS' # or == ? why a boolean without condition or return ? 
Verwandte Themen