Wie die Lücken in einer Liste von Tupeln füllen

DJ_ 96:

Ich habe eine Liste von Tupeln wie folgt aus:

[(1, 'Red'), (2, 'Yellow'), (6, 'Pink'), (7, 'Blue'), (8, 'Green')]

Die Zahlen in der Tupel stellen den Index. Da jedoch einige der Indizes in meine Eingabedatei fehlt, muss ich einige Tupel in der Liste einzufügen, und stellen Sie die Liste wie folgt aussehen:

[(1, 'Red'), (2, 'Yellow'), (3, None), (4, None), (5, None), (6, 'Pink'), (7, 'Blue'), (8, 'Green')]

Wenn einige von euch irgendwelche Ideen würde ich wirklich schätzen, wenn Sie Ihre Zeit und kommentieren etwas nehmen.

MARCO Lagalla:

Ich schlage vor, hier die einfachste Implementierung, aber nicht sehr effizient für große Listen:

test = [(1, 'color: Red'), (2, 'color: Yellow'), (6, 'color: Pink'), (7, 'color: Blue'), (8, 'color: Green')]


max_index = max(test, key=lambda item:item[0])[0]

missing_values = []
for i in range(1, max_index + 1):
    missing = False
    for index, val in test:
        if i != index:
            missing = True
        else:
            missing = False
            break
    if missing:
        missing_values.append((i,'color: None'))

new_test = test + missing_values
new_test_sorted = sorted(new_test, key=lambda x:x[0])
print(new_test_sorted)

Das gibt:

[(1, 'color: Red'), (2, 'color: Yellow'), (3, 'color: None'), (4, 'color: None'), (5, 'color: None'), (6, 'color: Pink'), (7, 'color: Blue'), (8, 'color: Green')]

Ich denke du magst

Origin http://43.154.161.224:23101/article/api/json?id=364939&siteId=1
Empfohlen
Rangfolge