Estoy repite una lista de otras variables de la lista en forma ordenada variable de diccionario y añadiéndolos a una lista nueva. Estoy tratando de filtrar las nuevas entradas de diccionario ordenado que sólo reciban los resultados en los que la variable 8 en la lista es igual a "C". El código que tengo debajo de mí está dando un valor de error, aunque.
keys = ['key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8']
blank_list = []
for a in list(zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
orglist2 = {a: b for a, b in orglist if b[8] == 'C'}
blank_list.append(orglist2)
¿Cómo puedo solucionar este problema sólo para recuperar valores ordereddict donde var8 es igual a un valor específico ( 'C')? El resultado debe ser una lista de objetos ordenados dict donde el var8 es igual a 'C' independientemente de lo que las otras variables son iguales. Otros valores posibles para var8 podrían estar en blanco o ninguno.
Si desea mantener su enfoque, esto debe solucionarlo:
keys = ['key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8']
blank_list = []
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
orglist2 = {a: b for a, b in orglist.items() if b[6] == 'C'}
blank_list.append(orglist2)
Su problema era, que for a, b in orglist
no funcionaría, porque iteración a través de un diccionario sólo le da las claves del diccionario.
pero tal vez esto sería poco más legible:
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
if a[6] == 'C':
blank_list.append(dict(zip(keys, a)))
o
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
if orglist["key7"] == 'C':
blank_list.append(orglist2)