2016-04-17 18 views
-7

ich wie so ein Wörterbuch haben:höchste Wert in einem Wörterbuch finden

class1 = { 
      max: 10, 3, 5 
      Michael: 4. 4, 8 
      jack: 0, 0, 3 
      } 

Dies ist der entsprechende Code

class1 = {} 
     with open("1.txt", "r+") as f: 
      for line in f: 
       columns = line.split(":") 
       if len(columns) == 2: 
        names = columns[0] 
        scores = columns[1].strip() 
       else: 
        pass 
       if class1.get(names): 
        class1[names].append(scores) 
       else: 
        class1[names] = list(scores) 

Die Zahlen, die die Noten repräsentieren, und ich würde für jeden für die höchste Punktzahl gefallen Namen ausgedruckt werden, das ist meine gewünschte Ausgabe:

max: 10 
Micheal: 8 
jack: 3 

ich dies bereits versucht haben:

max_value = max(class1.values()) 
print(sorted(max_value)) 

Aber es macht keinen Unterschied zu meiner Ausgabe.

Vielen Dank im fortgeschrittenen

+3

, dass nicht einmal ein gültiges dict in Python ist. http://www.tutorialspoint.com/python/python_dictionary.htm – Keatinge

+0

@Racialz, das ist mein aktuelles Wörterbuch, jeder Schlüssel hat mehr als einen Wert – BLaBla

+0

Wenn diese 'dict' Schlüssel Strings sein sollen, haben Sie die Anführungszeichen vergessen. Und was ist mit der verrückten Einrückung in Ihrem zweiten Codeblock? Übrigens ist das "else: pass" redundant. –

Antwort

-2
class1 = {} 
with open("1.txt", "r+") as f: 
    for line in f: 
     columns = line.split(":") 
     if len(columns) == 2: 
      name = columns[0].strip() 
      scores = map(int, columns[1].split(',')) 
      class1[name] = scores 

for name, scores in class1.items(): 
    print('{}: {}'.format(name, max(scores))) 
-2
for name, l in class1: 
    print("%s : %d" % (name, max(l))) 
Verwandte Themen