Ich habe ein Wörterbuch mit der Bezeichnung wordCounts
, die ein Wort auf, wie oft es aufgetreten ist, wie kann ich die oberen n
Wörter im dict bekommen, während mehr als n
, wenn es eine Krawatte?Python Top-Werte im Wörterbuch erhalten
Antwort
Wie die vorherige Antwort sagt, können Sie als Counter
eine Umwandlung durchführen, um den Umgang mit diesem Dataset zu erleichtern.
>>> from collections import Counter
>>> d = {"d":1,"c":2,"a":3,'b':3,'e':0,'f':1}
>>> c = Counter(d)
>>> c
Counter({'b': 3, 'a': 3, 'c': 2, 'f': 1, 'd': 1, 'e': 0})
Counter
hat eine most_common(n)
Methode, die die n
häufigsten Elemente brauchen. Beachten Sie, dass es Bindungen ausschließen wird. Deshalb:
>>> c.most_common(4)
[('b', 3), ('a', 3), ('c', 2), ('f', 1)]
Um alle Werte gleich dem n-ten Element umfassen, können Sie so etwas wie die folgenden tun, ohne zu einer Counter
zu konvertieren. Das ist ziemlich chaotisch, aber es sollte den Trick machen.
from collections import Counter
def most_common_inclusive(freq_dict, n):
# find the nth most common value
nth_most_common = sorted(c.values(), reverse=True)[n-1]
return { k: v for k, v in c.items() if v >= nth_most_common }
Sie verwenden können, wie folgt:
>>> d = {'b': 3, 'a': 3, 'c': 2, 'f': 1, 'd': 1, 'e': 0}
>>> most_common_inclusive(d, 4)
{'d': 1, 'b': 3, 'c': 2, 'f': 1, 'a': 3}
Eine Lösung könnte:
from collections import Counter, defaultdict
list_of_words = ['dog', 'cat', 'moo', 'dog', 'pun', 'pun']
def get_n_most_common(n, list_of_words):
ct = Counter(list_of_words)
d = defaultdict(list)
for word, quantity in ct.items():
d[quantity].append(word)
most_common = sorted(d.keys(), reverse= True)
return [(word, val) for val in most_common[:n] for word in d[val]]
Und die Tests:
>> get_n_most_common(2, list_of_words)
=> [('pun', 2), ('dog', 2), ('moo', 1), ('cat', 1)]
>> get_n_most_common(1, list_of_words)
=> [('pun', 2), ('dog', 2)]
MooingRawr auf dem richtigen Weg ist, aber jetzt müssen wir nur die TopbekommenErgebnisse
l = []
for i, (word, count) in enumerate(sorted(d.items(), reverse=True, key=lambda x: x[1])):
if i >= n and count<l[-1][1]:
break
l.append((word, count))
Ich würde zu 'für i, (Wort, Anzahl) in Aufzählung (...)' ändern und dann 'i> = n' – brianpck
@brianpck ausgezeichneten Punkt verwenden. Ich wusste, dass es einen besseren Weg gab, aber heute war ein langsamer Tag für mich –
- 1. Python: Schlüssel des Index im Wörterbuch erhalten
- 2. Mehrere Werte im Wörterbuch erhalten
- 3. Python-Wörterbuch erhalten mehrere Werte
- 4. Index des Wortes im englischen Wörterbuch erhalten: Python
- 5. Python Counting countries im Wörterbuch
- 6. Ersetze Listenwert im Python-Wörterbuch
- 7. Bestellung Angebote im Python-Wörterbuch
- 8. Python: If (user_input) im Wörterbuch
- 9. Indexoperator [] im Wörterbuch, in Python
- 10. Entfernen Zeichenfolge im Python-Wörterbuch Wert
- 11. erhalten Max und Min Wert im Wörterbuch
- 12. Schlüssel für spezifischen Wert im Wörterbuch erhalten
- 13. Python-Wörterbuch erhalten eindeutige Liste zählt
- 14. Gebäude Wörterbuch im Wörterbuch
- 15. Python: Validieren jeweils Werte im Wörterbuch
- 16. Prozentsatz eines Buchstabens im Python-Wörterbuch abrufen
- 17. Zugriff auf verschachtelte Schlüsselwerte im Python-Wörterbuch
- 18. Python - Finden Sie Top Artikel im Wörterbuch
- 19. Python Count Gesamtzahl Elemente im Wörterbuch
- 20. Liste der Schlüsselwertpaare im Python-Wörterbuch sortieren
- 21. Textdatei mit fester Breite im Python-Wörterbuch
- 22. Wert von Integer im Python-Wörterbuch erhöhen
- 23. Planschleifen Liste im Wörterbuch in Python
- 24. Counting booleans im Wörterbuch
- 25. Python Update-Wörterbuch in Wörterbuch
- 26. Python: Tupel von Wörterbuch Wörterbuch
- 27. Abnehmender Wert im Wörterbuch
- 28. mehrere Wörterbuch Iteration Python
- 29. Python-Wörterbuch append
- 30. Attribute im Wörterbuch
Mit "top" nehme ich an, dass Sie die höchste Wortzahl meinen? – Soviut
Bitte zeigen Sie, was Sie bisher versucht haben. – Soviut
@Soviut ja, das ist richtig. Ich habe Python nie benutzt, und ich habe das Gefühl, dass es dafür eine eingebaute Funktion gibt. – Clip