Как отобразить «имя» и «оценка», которые имеют самый высокий балл? - PullRequest
0 голосов
/ 03 мая 2019

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

Пример ввода:

l=[
  ('ram'  ,16),
  ('sara' ,13),
  ('akhil',24),
  ('vinay',24)
]

Пример вывода:

akhil 24

Пояснение:

Сначала я отсортировал данные по второму элементу в списке кортежей. Среди всех игроков "ахил" и "винай" имеют одинаковые оценки, поэтому среди двух Народный игрок «ахил» начинается сначала в словаре или лексикографическом порядке, поэтому я напечатал «ахил».

Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

l = [('ram', 16), ('sara', 13), ('akhil', 24), ('vinay', 24)]

l1 = []

l.sort (ключ = лямбда x: x [1])

print (l)

для i в диапазоне (1, len (l)):

if(l[i-1][1]==l[i][1]):
    l1.append(l[i][0])
    l1.append(l[i-1][0])
    z=l[i-1][1]

l1.sort ()

print (l1 [0], z)

0 голосов
/ 03 мая 2019

Попробуйте это.

from collections import OrderedDict
l=[('ram',16),('sara',13),('akhil',24),('vinay',24)]
a = {}
for i in l:
    a[i[0]]=i[1]
a = OrderedDict(sorted(a.items(), key=lambda t: t[0]))
print max(a.iterkeys(), key=lambda k: a[k]),a[max(a.iterkeys(), key=lambda k: a[k])]
...