0
votes

Conversion du dictionnaire Python

J'ai un dictionnaire Python: xxx

Je veux le résultat comme suit: xxx

peut-être que quelqu'un puisse me dire comment faire comment faire Ceci?


2 commentaires

Utilisez pour -Loop pour fonctionner avec le dictionnaire et le convertir en listé des listes ou du nouveau dictionnaire.


Un ordre particulier des balises dans le résultat est requis?


5 Réponses :


2
votes

Essayez ceci xxx


2 commentaires

Il ressemble à une solution inefficace, l'itération à travers des dicts imbriqués donnera au O (n ^ 2)


Je n'ai pas utilisé pour boucle mais utilisé votre requête de groupeby et obtenu le résultat df = pd.dataframe (d) df [["col1", "col2"]] = pd.dataframe (df.col1.values.tolist (), index = df.index) df ['col1'] = df.col1.str.replace ('#', ',') df = df.groupby (["Col2"]) ["Col1"]. Appliquer (Lambda x: ",". Joindre (ensemble (''. Joindre (liste (x)). Strip (","). Split (","))))))))))))



1
votes

Voici un code simple xxx xxx


1 commentaires

Ce n'est pas la même sortie que OP s'attend.



0
votes

Si la commande de balises est importante, supprimez d'abord le suivi # code> et scinder par # code>, puis par groupe supprimez les doublons et rejoindre code>:

df = pd.DataFrame(d['col1'])
df['tag'] = df['tag'].str.strip('#').str.split('#')
f = lambda x: ','.join(set([z for y in x for z in y]))
df = df.groupby('id')['tag'].apply(f).reset_index()
print (df)
   id            tag
0   1  three,one,two
1   2            two


0 commentaires

0
votes

dic = [{'col1': [{'id': 1, 'tag': '# un # deux'}, {'id': 2, 'tag': '# deux #'}, { 'id': 1, 'tag': '# un # trois #'}]}]

rangée = [] Pour la clé en DIC: Data = Key ['Col1'] Pour les lignes dans les données: rangée.append (rangées) df = pd.dataframe (rangée) Imprimer (DF)

o


1 commentaires

Bien que ce code puisse répondre à la question, fournissant un contexte supplémentaire concernant la raison et / ou la manière dont ce code répond à la question améliore sa valeur à long terme. Je vous recommanderais de vérifier alors officiel Comment répondre à l'article ainsi que le compréhensive Blog POST de JON SKEET .



0
votes

J'ai essayé comme ci-dessous

import pandas as pd
a = {'col1':[{'id':1, 'tag':'#one#two'},{'id':2, 'tag':'#two#'},{'id':1, 'tag':'#one#three#'}]}

df = pd.DataFrame(a)
df[["col1", "col2"]] = pd.DataFrame(df.col1.values.tolist(), index = df.index)
df['col1'] = df.col1.str.replace('#', ',')
df = df.groupby(["col2"])["col1"].apply(lambda x : ",".join(set(''.join(list(x)).strip(",").split(","))))

O/P:
col2
1    one,two,three
2    two


0 commentaires