2D-массив в Python

Я очень новичок в 2D-массивах в Python. Я пытаюсь создать 2D-массив, который просит пользователя ввести имя, а затем находит имя в массиве и распечатывает, в какой позиции это имя.

Мой код на данный момент:

pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]

enter_pupil = input('Enter name of Pupil   ')  
print(str(pupil_name) + ' is sitting on chair number ' + str([]))

print(' ')

Возможно ли то, о чем я прошу? Это просто для удовольствия, и хотелось бы, чтобы это работало. заранее спасибо

Вероятно, вы бы предпочли использовать словари для решения этой проблемы.

Carlo Mazzaferro 15.03.2018 17:17

Если вы все еще хотите использовать список списка, вы можете сделать это для ученика в ученике_имя: if ученик [0] == enter_pupil: print (ученик [1])

dnp1204 15.03.2018 17:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
215
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вам нужен словарь.

>>> pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]
>>> pupil_pos = dict(pupil_name)
>>> 
>>> pupil_pos
{'Jess': 0, 'Erik': 2, 'Tom': 1}
>>> pupil_pos['Erik']
2

Это дает вам сопоставление имен с должностями, которые вы можете запросить, указав имя.

Как другие советовали в комментариях, вы должны использовать dict.

Вы также должны использовать сырой ввод вместо Вход, поскольку он преобразует ввод пользователя в str.

student_chair_numbers = {
    'Jess': 0,
    'Tom': 1,
    'Erik': 2,
}
enter_pupil = raw_input('Enter name of Pupil   ')
print(enter_pupil + ' is sitting on chair number ' + str(student_chair_numbers[enter_pupil]))

Вот решение, которое использует ваши вложенные списки. См. Ответ Джима Райта для решения dict.

pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]

def find_chair(name, chair_numbers):
    for (n, c) in chair_numbers:
        if n == name:
            return c
    return None

enter_pupil = input('Enter name of Pupil   ')  
print(str(enter_pupil) + ' is sitting on chair number ' + str(find_chair(enter_pupil, pupil_name)))

print(' ')
Ответ принят как подходящий

Вы должны использовать словарь, как указывали другие. Однако, если вы все же хотите сохранить 2D-список, вот что вы можете сделать:

pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]
enter_pupil = input('Enter name of Pupil   ')

for pupil, seat in pupil_name:
    if pupil == enter_pupil:
        print('{} is seating at chair number {}'.format(pupil, seat))
        break
else:
    print('Not found: {}'.format(enter_pupil))

Заметки

  • Код проходит через pupil_name, и каждая итерация назначает подсписок pupil и seat.
  • Если мы нашли совпадение, мы распечатываем имя и место и выходим из цикла. Нет смысла продолжать зацикливаться, поскольку мы нашли то, что хотим.
  • Предложение else является интересным и уникальным аспектом цикла Python for: если мы перебрали все имена / места и не сломались (то есть не нашли имя), то выполняется код в соответствии с предложением else.

Другие вопросы по теме