supprimer les valeurs vides dans le dictionnaire


CONTRE

Mon code est le suivant:

new_dict = {k: v for k,v in d.items() if v != None}

Je dois supprimer les valeurs vides qui apparaissent comme ''dans mon dictionnaire.

Je reçois actuellement la sortie:

'000B4662348C35B4': ['000B4662348C35B4', '', '', '', '', '', '2938717381', '5286676508', '7818174481', '2938717381', '4110479734', '9894624226', '9827417465', '9907632031', '2941365751', '1220277655', '7455720881', '88810260', '8441033464', '3992507902', '8464607083', '1201527184', '2861935553', '4110479734', '5789253700', '2637281600', '5603666228', '9126320955', '2431085055', '8833906919', '1565530436', '8340343124', '2029932640', '6334249086'],

ce n'est qu'un petit peu de la sortie mais vous devriez avoir l'idée. Je veux juste le ''supprimer.

jusqu'à présent, j'ai essayé:

new_dict = {k: v for k,v in d.items() if v != ''}
new_dict = {k: v for k,v in d.items() if v}

tous ceux-ci impriment toujours la même sortie.

Andrej Kesely

Vous pouvez utiliser la compréhension de liste sur les valeurs de dictionnaire où vous filtrerez les éléments vides:

d = {'000B4662348C35B4': ['000B4662348C35B4', '', '', '', '', '', '2938717381', '5286676508', '7818174481', '2938717381', '4110479734', '9894624226', '9827417465', '9907632031', '2941365751', '1220277655', '7455720881', '88810260', '8441033464', '3992507902', '8464607083', '1201527184', '2861935553', '4110479734', '5789253700', '2637281600', '5603666228', '9126320955', '2431085055', '8833906919', '1565530436', '8340343124', '2029932640', '6334249086']}

d = {k: [i for i in v if i] for k, v in d.items()}
print(d)

Impressions:

{'000B4662348C35B4': ['000B4662348C35B4', '2938717381', '5286676508', '7818174481', '2938717381', '4110479734', '9894624226', '9827417465', '9907632031', '2941365751', '1220277655', '7455720881', '88810260', '8441033464', '3992507902', '8464607083', '1201527184', '2861935553', '4110479734', '5789253700', '2637281600', '5603666228', '9126320955', '2431085055', '8833906919', '1565530436', '8340343124', '2029932640', '6334249086']}

Remarque:

{k: v for k,v in d.items() if v != ''}

filtrera simplement les valeurs de dictionnaire qui ne sont pas égales à '', mais les valeurs de votre dictionnaire sont des listes.


EDIT: Sans liste ni compréhension de dict:

out = {}
for k, v in d.items():
    tmp = []
    for i in v:
        if i != "":
            tmp.append(i)
    out[k] = tmp

print(out)

Articles connexes


Filtrer le dictionnaire et supprimer les valeurs les plus basses

devmrh J'ai un dictionnaire comme ci-dessous. Existe-t-il un moyen de générer un dictionnaire avec les 5 valeurs les plus élevées? S'il y a des égalités pour la 5e valeur la plus élevée, je dois inclure ces clés. Dictionnaire d'entrée : { "1": 1, "12":

Remplir les valeurs dans le dictionnaire python

Daniel J'ai l'exemple de code suivant test_dict = dict.fromkeys(['x','y','z'], np.zeros(5)) for j in range(5): test_dict['x'][j]= j*10 print(test_dict) Je m'attends à ce que cela remplisse la valeur de «x» comme {0., 10., 20., 30., 40.} et c'est le ca

Supprimer les valeurs vides du CSV dans Reporting Services

user2171512 comment puis-je supprimer une valeur vide lorsque j'exporte mon rapport SSRS au format CSv. Par exemple, j'ai PlayerId,F1,F2,Date,F3,F4 ,,,,, lorsque mon rapport est vide et que je l'ai exporté au format csv Mon rapport générateur de graphes Essay

Supprimer les espaces dans les valeurs du dictionnaire python

utilisateur2182659 Je lis les données d'un sous-traitant. Les données ont "Nom" et "Valeur avec avertissements", donc je les mets dans un dictionnaire de la manière d[data[i:i+6]] = data[i+8:i+17], data[i+25:i+36] Ainsi à la fin j'ai mon dict comme ; {'GPT-P