для l oop в списке, который содержит словарь - PullRequest
1 голос
/ 21 июня 2020

Я хочу написать программу, которая может распечатать команду с наивысшим баллом, затем команду со вторым наивысшим баллом, а затем третью команду.

WorldCup=[
    {name:"Spain", points:9},
    {name:"Portugal",points:7},
    {name:"Iran",points:6}
]

Я имею в виду, что хочу поместить этот список в forloop и получите следующий результат:

Spain
Portugal
Iran

Я не уверен, возможно ли это в списке, но ничего страшного, если вы можете решить это любым возможным способом.

Ответы [ 3 ]

2 голосов
/ 21 июня 2020

Ваш список уже отсортирован от самого высокого до самого низкого по points. Списки упорядочены, поэтому вы можете положиться на него для поддержания порядка при его повторении.

Таким образом, вы можете напечатать свои имена внутри этого for l oop:

for team in WorldCup:
    print(team['name'])

Однако я предполагаю, что это просто удача, и вы хотите справиться с любым возможным порядком команд. Если это так, мы можем отсортировать команды в порядке убывания по points, используя sorted() и reverse=True.

Для сортировки key, как и в других ответах, мы можем используйте operator.itemgetter(). Использование itemgetter вместо lambda обычно немного быстрее, как показано в этом ответе .

from operator import itemgetter

WorldCup = [
    {'name':"Spain", 'points':9},
    {'name':"Portugal",'points':7},
    {'name':"Iran",'points':6}
]

sorted_teams_desc = sorted(WorldCup, key=itemgetter('points'), reverse=True)

for team in sorted_teams_desc:
    print(team['name'])

Вывод:

Spain
Portugal
Iran
1 голос
/ 21 июня 2020

Вы должны отсортировать данные по points и распечатать только name

worldCup = [{'name':"Spain", 'points':9},{'name':"Portugal",'points':7},{'name':"Iran",'points':6}]
    
for item in sorted(worldCup, key=lambda x:x['points'], reverse=True):
  print(item['name'])
1 голос
/ 21 июня 2020

Здесь вы go:

WorldCup=[
    {'name':"Spain", 'points':9},
    {'name':"Portugal",'points':7},
    {'name':"Iran",'points':6}
]

for team in sorted(WorldCup, key=lambda team: team['points'], reverse=True):
    print(team['name'])

Вывод:

Spain
Portugal
Iran
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...