Python Text Analyse?
Im Endeffekt soll der Code etwas in dieser Art machen, hat jemand einen umsetzungsvorschlag? Bei der 2ten Spalte soll der Durchschnitt genommen werden.
Woher bekommt man die input daten? Ist das ein input feld, eine Liste oder eine mehrdimensionale Liste?
Liste In Liste
[['tea', 1.0], ['teas', 0.942], ['camellia_sinensis', 0.913], ['afternoon_tea', 0.735], ['souchong', 0.733], ['cuppa', 0.727]]
Als Beispiel, (Input Variable)
2 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Python, Programmieren & Softwareentwicklung
words = [ ['animal', 1.0], ['dog', 0.94], ['frog', 0.91], ['dog', 0.91], ['pet', 0.73], ['animal', 1.0], ['dog', 0.91], ['animal', 1.0], ['frog', 0.71], ['animal', 1.0], ['animal', 1.0] ]
# Gruppieren (dafür eignet sich ein Dictionary super):
groupedWords = {}
for (key, value) in words:
groupedWords.setdefault(key, []).append(value)
# Durchschnitt berechnen:
groupedWordsAvg = {key: (sum(value)/len(value)) for (key,value) in groupedWords.items()}
# Sortieren (und wieder zu Liste an Listen umwandeln):
groupedWordsAvgSorted = list(map(list, groupedWordsAvg.items()))
groupedWordsAvgSorted.sort(key=lambda x: x[1], reverse=True)
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Python, Programmieren & Softwareentwicklung
Hier mal eine weitere Option:
class md(dict):
def __init__(self,iter):
for k,v in iter:
super().setdefault(k,[]).append(v)
def avg(self):
return dict( (k, sum(v)/len(v) ) for k,v in super().items() ) #Alt. dict comprehension
def rel(self):
return sorted(self.avg().items(),key=lambda x:x[1],reverse=True)
#return sorted(([k,v] for k,v in self.avg().items()),key=lambda x:x[1],reverse=True)
#Alt.: list of lists
Eine no frills Version. einfach mit der Liste von Listen instanziieren, avg() liefert ein dict mit den Durchschnitten, rel() eine sortierte Tupelliste. Natürlich kann man hier noch Parameter zufügen, um beide Sortierrichtungen abzudecken o.ä. .