Python Counting Länder im Wörterbuch

Ich schreibe eine Funktion, die zählt, wie oft ein Land in einem Wörterbuch erscheint und das Land, das am meisten erschien, zurückgibt. Wenn mehr dann ein Land am meisten erscheint, dann sollte es eine Liste der Länder zurückgeben.

Beispielwörterbuch:

{'Leonardo da Vinci': [("Portrait of Isabella d'Este", 1499, 63.0, 46.0, 'chalk', 'France'), ('The Last Supper', 1495, 460.0, 880.0, 'tempera', 'Italy')], 'Pablo Picasso': [('Guernica', 1937, 349.0, 776.0, 'oil paint', 'Spain')]} 

Da Frankreich, Italien und Spanien alle nur einmal in diesem Wörterbuch erscheinen, sollte die Funktion zurückkehren

 countries_appeared_most(dictionary1()) ['France', 'Italy', 'Spain'] 

Wenn eines dieser Länder stattdessen 2 oder 3 Mal die Funktion erscheinen würde, würde dieses Land zurückkehren. Der aktuelle Code, den ich unten habe, sucht nach dem Künstler, der am meisten erscheint, aber ich glaube, dass ein paar kleine Änderungen mir helfen könnten, stattdessen das Land zurückzukehren, das am meisten erscheint. Hat jemand Rat, wie man das macht? Danke für die Hilfe

Code:

 def countries_appeared_most(db): if not db: return None maxcount = max(len(v) for v in db.values()) themax = [k for k, v in db.items() if len(v) == maxcount] themax.sort() return themax 

2 Solutions collect form web for “Python Counting Länder im Wörterbuch”

 counter = {} for painting_list in db.values(): for painting in painting_list: country = painting[-1] counter[country] = counter.get(country, 0) + 1 maxcount = max(counter.values()) themax = [k for k, count in counter.items() if count == maxcount] 

Flatten Sie die Werte, um eine Liste der Länder zu erhalten:

 >>> [x[-1] for X in d.values() for x in X] ['Spain', 'France', 'Italy'] 

Und ein Counter kann dir die häufigsten direkt geben:

 >>> from collections import Counter >>> countries = [x[-1] for X in d.values() for x in X] >>> Counter(countries).most_common() [('Italy', 1), ('Spain', 1), ('France', 1)] 
Python ist die beste Programmiersprache der Welt.