0
votes

Comment extraire les valeurs du dictionnaire avec condition

Mon dictionnaire est ci-dessous, si les valeurs se terminent par csv ou json Je dois mettre dans un autre dictionnaire du même dictionnaire: xxx < p> code est ci-dessous: xxx

mon out xxx

attendu sur xxx


0 commentaires

6 Réponses :


0
votes

Vous pouvez utiliser compréhension dict em> avec liste COMP EM> sur chacune des valeurs tout en filtrant avec str.endswith code> .

d = {'a': ['1.json', '1.html', '1.csv'], 'B': ['2.json', '2.html', '2.csv']}

new = {k:[i for i in v if i.endswith(('.csv','.json'))] for k,v in d.items()}
# {'a': ['1.json', '1.csv'], 'B': ['2.json', '2.csv']}


0 commentaires

0
votes

Vous pouvez essayer d'utiliser RFind pour trouver le dernier. Dans le nom de fichier et pour ajouter la liste si elle correspond à CSV ou JSON

d = {'a': ['1.json', '1.html', '1.csv'], 'B': ['2.json', '2.html', '2.csv']}
for k, v in d.items():
  d[k] = []
  for i in v:
    if i[i.rfind(".") + 1:] in ('csv', 'json'):
        d[k].append(i)


0 commentaires

0
votes

Veuillez le tester:

from collections import defaultdict

x = defaultdict(list)
d = {'a': ['1.json', '1.html', '1.csv'], 'B': ['2.json', '2.html', '2.csv']}

for k, v in d.items():
    for i in v:
        if i.split('.')[-1] in ['csv', 'json']:
            x[k].append(i)

print(dict(x))


0 commentaires

0
votes

Vous ne changez jamais V, le dictionnaire est donc inchangé. Vous devez construire une nouvelle liste uniquement en conservant les valeurs recherchées: xxx

ou même mieux: xxx


0 commentaires

0
votes

Une solution simple serait la suivante, en supposant que vous souhaitez mettre à jour le dictionnaire existant xxx


1 commentaires

Un peu mieux d'utiliser définir au lieu de la liste . Aussi i.rsplit ('.', 1) [- 1] sera plus vite plus rapide. Et vous devriez éviter la modification de la liste pendant que vous êtes itération dessus.



0
votes

Vous pouvez utiliser le nom de fichier divisé et ajouter une condition pour vérifier le type de fichier (à l'aide de la liste de comparaison peut être une meilleure option si vous souhaitez ajouter plus de types de fichiers).

Combinez ceci avec une compréhension de la liste, ce qui fournit une manière concise Pour créer des listes. P>

d = {'a': ['1.json', '1.html', '1.csv'], 'B': ['2.json', '2.html', '2.csv']}

filtered_d = {key:[item for item in value if item.split('.')[-1] in ['json','csv']] for key, value in d.items()}


0 commentaires