Создать таблицу и отсортировать данные из списков в словаре - PullRequest
0 голосов
/ 06 июля 2018

У меня есть словарь, который включает списки

    students = {
1:["name1", 20, 100],
2:["name2", 20, 100],
3:["name3", 20, 95],
4:["name4", 21, 65],
5:["name5", 22, 85]
}

Я хочу создать таблицу и отсортировать данные по именам. как это

Name        Age       Score
name1       20        100
name2       20        100
name3       20        95
name4       21        65
name5       22        85

Как я могу это сделать? Я написал так:

students = {
1:["Rauf", 20, 100],
2:["Shafag", 20, 100],
3:["Ali", 20, 95],
4:["Camal", 21, 65],
5:["Arzu", 22, 85]

}
print(" ")
print("{:>12} {:>12} {:>12}".format('Name','Age','Score'))
print(" ")
for v in students.values():
    name, age, score = v
    print(sorted(("{:>12} {:>12} {:>12}".format(name, age, score)), key= lambda v: v[2]))

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Используя f-строки (Python 3.6+) и map, вы можете просто использовать синтаксис и сделать свой код более эффективным. Вам нужно sorted для сортировки по имени.

import operator
students = {1:["Rauf", 20, 100],
            2:["Shafag", 20, 100],
            3:["Ali", 20, 95],
            4:["Camal", 21, 65],
            5:["Arzu", 22, 85]}

print(" ")
print(f"{'Name':>12} {'Age':>12} {'Score':>12}")
sorted_students = sorted(students.items(), key=operator.itemgetter(1))
print(" ")
for name, age, score in map(itemgetter(1), sorted_students):
    print(f"{name:>12} {age:>12} {score:>12}")

Результат:

    Name          Age        Score

     Ali           20           95
    Arzu           22           85
   Camal           21           65
    Rauf           20          100
  Shafag           20          100
0 голосов
/ 06 июля 2018

Помогает ли это

import operator
students = {
1:["Rauf", 20, 100],
2:["Shafag", 20, 100],
3:["Ali", 20, 95],
4:["Camal", 21, 65],
5:["Arzu", 22, 85]

}
print(" ")
print("{:>12} {:>12} {:>12}".format('Name','Age','Score'))
sorted_students = sorted(students.items(), key=operator.itemgetter(1))
print(" ")
for v in sorted_students:
    name, age, score = v[1]
    print("{:>12} {:>12} {:>12}".format(name, age, score))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...