Как я могу сравнить и распечатать элемент из 2D списка в Python? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть этот 2D-список, где первый элемент - это название компании, второй - сколько старший разработчик получает зарплату, а третий элемент - сколько часов они работают в неделю.

brands = [["Microsoft", "120", "38", "1124"], ["Apple", "150", "40", "1800"], ["Google", "110", "35", "1437"]]

Iя пытаюсь сравнить brands[0][1] with brand[1][1] and brands [2][1] и напечатать самую низкую и самую высокую заработную плату в отрасли, например, "The lowest wage: Google, 110" "The highest wage: Apple,150", затем распечатать самые низкие и самые высокие рабочие часы, для краткого списка это легко с заявлениями if и else, но я пытаюсь сделать общий циклпоскольку в случае гораздо большего списка.

я пробовал min (), но это было безуспешно, но я уверен, что есть способ заставить его работать.

Ответы [ 4 ]

0 голосов
/ 04 октября 2018

Вы можете отсортировать с помощью лямбда по требуемой категории key=lambda x: x[1], будет относиться к заработной плате, затем вывести соответствующие индексы, list[0][0], list[0][x] для нашего минимума и list[-1][0], list[-1][x] для наших максимумов

wage = sorted(brands, key=lambda x: x[1])
print('The lowest wage: {}, {}'.format(wage[0][0], wage[0][1]))
print('The highest wage: {}, {}'.format(wage[-1][0], wage[-1][1]))

hours = (sorted(brands, key=lambda x: x[2]))
print('The lowest working hours: {}, {}'.format(hours[0][0], hours[0][2]))
print('The highest working hours: {}, {}'.format(hours[-1][0], hours[-1][2]))
The lowest wage: Google, 110
The highest wage: Apple, 150
The lowest working hours: Google, 35
The highest working hours: Apple, 40
0 голосов
/ 04 октября 2018

Я бы отсортировал ваш список, затем взял бы первый и последний элемент.Вы можете поместить его в f-string для печати (при использовании Python 3.6 или выше):

sorted_brands = sorted(brands, key=lambda x: int(x[1]))

print(f'the lowest wage: {sorted_brands[0][0]}, {sorted_brands[0][1]}, the highest wage: {sorted_brands[-1][0]}, {sorted_brands[-1][1]}')
#'the lowest wage: Google, 110, the highest wage: Apple, 150'
0 голосов
/ 04 октября 2018

Может быть, это будет работать:

wage=[]
for var in range(len(brands)):
   wage.append(brands[var][1])

min=wage.index(min(wage))
print("The lowest wage :{0}, {1}".format(brands[min][0],brands[min][1])
0 голосов
/ 04 октября 2018
company = None
minwage = None

for brand in brands:
    if minwage is None or brand[1] < minwage:
        minwage = brand[1]
        company = brand[0]

print 'Lowest wage was: %s,%s' % (minwage, company)
...