Wie kann man ein Array von Arrays in ein Wörterbuch mit einem Index umwandeln?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
AntoineP
User
Beiträge: 23
Registriert: Donnerstag 6. Juli 2017, 10:57

Code: Alles auswählen

[[{'count': 6L, 'item_id': 11313}, {'count': 6L, 'item_id': 11348}, {'count': 1L, 'item_id': 11359}],[{'count': 1L, 'item_id': 11432}, {'count': 1L, 'item_id': 11438}, {'count': 4L, 'item_id': 11311}]]
Ich möchte ein dictionnary mit einem Index für jeden array [{'count':...,'item_id':...},{'count':...,'item_id':...}...].

Für die moment, ich mache diese code :

Code: Alles auswählen

    def queryListShaping(self,liste,column):
        """
        transform lists of js data ton a list of dataframes 
        """
        print "liste"
        print liste
        dictionnary = {}
        for i,subList in enumerate(liste):
            dictionnary[i]=pd.DataFrame(subList)
            dictionnary[i]=dictionnary[i].sort_values("count",ascending = False)
            dictionnary[i][column]=dictionnary[i][column].fillna(0).astype(int)
            print "i"
            print i
            return dictionnary
Aber funkionert nicht und gruppiere alles in einem gleich dictionnary :

Code: Alles auswählen

self.group_content_reactions_list
{0:      count  item_id
23      6    11313
12      6    11348
32      1    11359
41      1    11432
1        1    11438
19      4    11311
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Für mich sieht das auf dem ersten Blick so aus, als könnte man die Werte von item_id einfach als Schlüssel verwenden und diesen die Werte von count zuweisen. Was aber daran liegen könnte, dass ich nicht wirklich verstehe, was Du im Endergebnis erreichen oder auswerten möchtest.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1019
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Müsste so funktionieren:

Code: Alles auswählen

import itertools


a = [[{'count': 6, 'item_id': 11313},
  {'count': 6, 'item_id': 11348},
  {'count': 1, 'item_id': 11359}],
 [{'count': 1, 'item_id': 11432},
  {'count': 1, 'item_id': 11438},
  {'count': 4, 'item_id': 11311}]]

list(itertools.chain(*a))
Ausgabe:

Code: Alles auswählen

[{'count': 6, 'item_id': 11313},
 {'count': 6, 'item_id': 11348},
 {'count': 1, 'item_id': 11359},
 {'count': 1, 'item_id': 11432},
 {'count': 1, 'item_id': 11438},
 {'count': 4, 'item_id': 11311}]
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
BlackJack

Ich würde aus der letzten Zeile das hier machen:

Code: Alles auswählen

list(itertools.chain.from_iterable(a))
AntoineP
User
Beiträge: 23
Registriert: Donnerstag 6. Juli 2017, 10:57

Danke für seinen antworter aber, ich misspoke, Ich habe auf diese Form gewartet

Code: Alles auswählen

    self.group_content_reactions_list
    {0:      count  item_id
    23      6    11313
    12      6    11348
    32      1    11359
    1: 
    41      1    11432
    1        1    11438
    19      4    11311
AntoineP
User
Beiträge: 23
Registriert: Donnerstag 6. Juli 2017, 10:57

Ich habe meinen Fehler gefunden : die return war in die for-Schleife. Es hätte nachher sein sollen :

Code: Alles auswählen

        for i,subList in enumerate(liste):
            dictionnary[i]=pd.DataFrame(subList)
            dictionnary[i]=dictionnary[i].sort_values("count",ascending = False)
            dictionnary[i][column]=dictionnary[i][column].fillna(0).astype(int)
        return dictionnary
Antworten