0
votes

retour ** Unique ** Nombre de données JSON de chaque rangée

Je travaille sur cela depuis un moment et je ne peux pas sembler tout ce que vous avez un bloc de données JSON qui ressemble à ce xxx pré>

J'essaie Pour générer un compte de chaque valeur, quelque chose comme ceci à la fin: p> xxx pré>

Remarque: il y a quelques lignes codées deux fois (comme le premier) que devrait être compté une seule fois forte> p>

J'ai essayé de nombreuses choses différentes et que le plus proche que j'ai été est ce p> xxx pré>

qui retourne: P>

{('Human development',): 1}
{('Economic management',): 1}
{('Trade and integration',): 1, ('Public sector governance',): 1, ('Environment and natural resources management',): 1}
{('Social dev/gender/inclusion',): 1}
{('Trade and integration',): 1}
{('Social protection and risk management',): 1}
{('Public sector governance',): 1}
{('Environment and natural resources management',): 1}
{('Rural development',): 1}
{('Public sector governance',): 2}
{('Rural development',): 1}
{('Rural development',): 1, ('Social protection and risk management',): 2}
{}
{('Trade and integration',): 1, ('Environment and natural resources management',): 1}
{('Social protection and risk management',): 2}
{('Rural development',): 1, ('Environment and natural resources management',): 1}
{('Rural development',): 1}
{('Human development',): 1}


7 commentaires

Je ne comprends pas ton exemple. Donnez-moi une entrée et une sortie attendue


Si le compte pour le code 'Développement humain' soit 3?


Votre entrée JSON ressemble-t-elle à cela? {[{code ':' 8 ',' Nom ': "Développement humain"}, {"Code": "8'," Nom ":" Développement humain "}], [{" Code ": '1', 'Nom': 'Gestion économique'}, {'Code': '8', 'Nom': "Développement humain"}], [{"Code": "5 '," Nom ":" Trade ": et intégration '}, {' code ':' 1 ',' Nom ': "Gestion économique"}], [{"Code": "7'," Nom ": 'Nom":' Social Dev / Inclusion '}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}


@Swadhikarc, non, le compte devrait être 2, car la première version est une erreur. Aucune entrée ne devrait être capable de compter deux fois pour une valeur. oui, c'est à quoi ressemble l'entrée (une sous-chaîne de toute façon)


L'entrée @chiennguyen est la première case, la sortie attendue est la deuxième


@Swadhikarc; Je pense que vous avez posté (et peut-être supprimé?) Quelque chose qui a fonctionné. Je peux le poster, mais j'aimerais vous donner crédit, donc si vous vouliez le remettre ...


Ike content que cela ait fonctionné c'est le crédit.


3 Réponses :


0
votes

ne peut pas comprendre la seconde pour boucle Le TEMP_LIST est créé à chaque itération comme liste vide, alors pourquoi devez-vous faire ce lis = tuple (SET (TEMP_LIST)) lisez-le dans une variable nom : xxx


2 commentaires

Le problème concerne les erreurs en double, ce que j'essaie de rendre compte là-bas; Voir la première ligne devrait vraiment être simplement [{'code': '8', 'Nom': "Développement humain"}] Au lieu de [[{Code ':' 8 ',' Nom ': "Développement humain"} , [{'code': '8', 'Nom': "Développement humain"},] Mais depuis que c'est là, je dois faire un ensemble unique de chaque rangée. Bien qu'il puisse certainement être un moyen plus facile de ce faire?


Voir le commentaire ci-dessus, c'est proche mais manque les DuPes



0
votes
input = [{'code': '8', 'name': 'Human development'},
        {'code': '8', 'name': 'Human development'},
        {'code': '1', 'name': 'Economic management'},
        {'code': '8', 'name': 'Human development'}, 
        {'code': '5', 'name': 'Trade and integration'},
        {'code': '1', 'name': 'Economic management'},
        {'code': '7', 'name': 'Social dev/gender/inclusion'}]
output = {}
for i in input:
    output[i['name']] = output.get(i['name'], 0) + 1
#Output:{'Social dev/gender/inclusion': 1, 'Economic management': 2, 'Human 
#        development': 3, 'Trade and integration': 1}

1 commentaires

Le problème est à nouveau les doublons qui sont faux, comme dans la ligne une.



1
votes

Étant donné que les détails de l'entrée ne sont pas clairs, j'ai supposé que votre entrée ci-dessous et que vous avez atteint ci-dessous CODE:

    wbp = [[{'code': '8', 'name': 'Human development'}, {'code': '8', 'name': 'Human development'}],
       [{'code': '1', 'name': 'Economic management'}, {'code': '8', 'name': 'Human development'}],
       [{'code': '5', 'name': 'Trade and integration'}, {'code': '1', 'name': 'Economic management'}],
       [{'code': '7', 'name': 'Social dev/gender/inclusion'}]]

dictd = dict()

    for record in wbp:
        names = set([item['name'] for item in record]) # Remove duplicate names using set
        for name in names:
            dictd[name] = dictd.get(name, 0) + 1  # If name not found, then 0 + 1, else count + 1

    print(dictd)


3 commentaires

Oui sur la structure de données, le problème du développement humain devrait être 2, car cette première ligne est une erreur (il ne peut y avoir qu'un de chaque article par ligne)


OK, j'ai modifié les entrées de double entrée et filtrées à l'aide de l'opérateur Set . Maintenant, les résultats sont comme comment vous êtes attendu


Cela semble avoir réapparu une certaine manière, cela a fonctionné un charme alors.