Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

116
Visualizações
Filtrar un diccionario de listas

Tengo un diccionario de la forma:

 {"level": [1, 2, 3], "conf": [-1, 1, 2], "text": ["here", "hel", "llo"]}

Quiero filtrar las listas para eliminar todos los elementos del índice i donde un índice en el valor "conf" no es >0.

Entonces, para el dict anterior, la salida debería ser esta:

 {"level": [2, 3], "conf": [1, 2], "text": ["hel", "llo"]}

Como el primer valor de conf no era > 0.

He intentado algo como esto:

 new_dict = {i: [a for a in j if a >= min_conf] for i, j in my_dict.items()}

Pero eso funcionaría solo para una tecla.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

tratar:

 from operator import itemgetter def filter_dictionary(d): positive_indices = [i for i, item in enumerate(d['conf']) if item > 0] f = itemgetter(*positive_indices) return {k: list(f(v)) for k, v in d.items()} d = {"level": [1, 2, 3], "conf": [-1, 1, 2], "text": ["-1", "hel", "llo"]} print(filter_dictionary(d))

producción:

 {'level': [2, 3], 'conf': [1, 2], 'text': ['hel', 'llo']}

Primero traté de ver qué índices de 'conf' son positivos, luego con itemgetter seleccioné esos índices de los valores dentro del diccionario.

Versión más compacta + sin lista temporal usando la expresión del generador en su lugar:

 def filter_dictionary(d): f = itemgetter(*(i for i, item in enumerate(d['conf']) if item > 0)) return {k: list(f(v)) for k, v in d.items()}
over 4 years ago · Santiago Trujillo Relatório

0

Mantendría los índices de elementos válidos (los mayores que 0) con:

 kept_keys = [i for i in range(len(my_dict['conf'])) if my_dict['conf'][i] > 0]

Y luego puede filtrar cada lista verificando si el índice de un determinado elemento en la lista está contenido en kept_keys :

 {k: list(map(lambda x: x[1], filter(lambda x: x[0] in kept_keys, enumerate(my_dict[k])))) for k in my_dict}

Producción:

 {'level': [2, 3], 'conf': [1, 2], 'text': ['hel', 'llo']}
over 4 years ago · Santiago Trujillo Relatório

0

Aquí hay una sola línea:

 dct = {k: [x for i, x in enumerate(v) if d['conf'][i] > 0] for k, v in d.items()}

Producción:

 >>> dct {'level': [2, 3], 'conf': [1, 2], 'text': ['hel', 'llo']}

Con datos de muestra:

 d = {"level":[1,2,3], "conf":[-1,1,2], "text":["here","hel","llo"]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda