Cómo llenar los vacíos en una lista de tuplas

Dj_ 96:

Tengo una lista de tuplas como la siguiente:

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

Los números de la tupla representan el índice. Sin embargo, dado que algunos de los índices faltan en mi archivo de entrada, tengo que insertar algunas tuplas en la lista, y hacer que el aspecto lista como la siguiente:

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

Si algunos de ustedes tienen alguna idea Realmente agradecería si usted toma su tiempo y comentario algo.

MARCO Lagalla:

Propongo aquí la implementación más sencilla, pero no es muy eficiente para grandes listas:

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)

Eso da:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=364948&siteId=1
Recomendado
Clasificación