Wie konvertieren von Counter-Objekt dict?
Daten Rahmen:
pair = collections.defaultdict(collections.Counter)
z.B.
pair = {'doc1': {'word1':4, 'word2':3},
'doc2': {'word1':2, 'word3':4},
'doc3': {'word2':2, 'word4':1},
...}
Ich die Daten behalten möchten, Rahmen Sie, aber alter der Typ dieses Teil {'word1':4, 'word2':3}
{'word1':2, 'word3':4}``...
Es ist jetzt ein Counter
und ich brauche eine dict
.
Habe ich versucht, dieses um die Daten aus pair
, aber ich weiß nicht, wie man erstellen Sie eine dict
für jeden doc:
new_pair = collections.defaultdict(collections.Counter)
for doc, tab in testing.form.items():
for word, freq in tab.items():
new_pair[doc][word] = freq
Ich will nicht zu ändern Sie die Ausgabe. Ich brauche nur, dass in jeder doc, der Datentyp ist dict
, nicht Counter
.
- Post die aktuellen traceback und mehr Kontext.
- WER sagt den das 'erste argument muss aufrufbar sein' ?
- was willst du? Können Sie uns die Ausgabe, die Sie wollen?
collections.defaultdict
argument- es ist die Linie
collections.defaultdict(collections.Counter())
warum ist es nichtcollections.defaultdict(collections.Counter)
was du vor hast? - Ja. definitiv meine Schuld. Aber dieser Teil des Codes nicht ändern Sie den Datentyp zu
dict
. Irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
Counter
ist schon eindict
- oder eine Unterklasse davon. Aber, wenn Sie wirklich brauchen, genau einedict
aus irgendeinem Grund, dann seine one-liner:Mapping (alles, verhält sich wie ein dictionary) übergeben werden können, in
dict
, und Sie erhalten einedict
mit dem gleichen Inhalt. Es gibt keine Notwendigkeit zu Durchlaufen, die es zu konstruieren, es selbst.Dies gibt Ihnen eine Schleife mit einer Zeile in den Körper anstelle einer verschachtelten Schleife. Aber jeder code der form:
Kann normalerweise getan werden, in einer Linie mit einem generator-Ausdrucks oder einer Liste festlegen, oder dict-comprehension. Wir bauen eine
dict
, so ein dict-comprehension (im Abschnitt "Beispiele" ist, was dich am meisten interessiert) scheint wahrscheinlich. Ich lasse Sie kommen mit es als eine übung für den Leser. 😉Counter
ist gebraucht, es kann nur umgewandelt werden indict
nach, so ist dies der einzige Weg, es zu tun.Vielleicht suchen Sie auch:
Den
Counter
ist auch eindict
. Aber davon abhängen, die Sie brauchen, ist vielleicht der folgende code ist, den Sie wollen.den
new_pair
dict ist, dass Sie wollen. Viel Glück!