Python Text Analyse?

Hanibal545  21.07.2022, 23:15

Woher bekommt man die input daten? Ist das ein input feld, eine Liste oder eine mehrdimensionale Liste?

0753532225234d 
Fragesteller
 21.07.2022, 23:28

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 Fragesteller als hilfreich ausgezeichnet
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

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.ä. .