Задать вопрос
rmfalx
@rmfalx

Как получить список значений?

У меня есть задача. Мне на вход дают разное количество строк и при этом сначала говорят сколько этих строк. Мне их подаваемых строк нужно сделать структуру - список или словарь.
например мне на вход дают 3 строки
aaa
bbb
ccc
Я написал код. чтобы принимать эти строки и заносить в список.
n = int(input())
d = []
for i in range(n):
    data = input().lower().split('\n')
    d.append(data)
print(d)


Но в итоге я получаю список списков.
[['aaa'], ['bbb'], ['ccc']]

Первый вопрос - почему получается список списков, а не список значений?
Второй вопрос - как сделать список значений?
Третий вопрос - как переделать код в добавление строк в ключи словаря?
Я пробовал сделать так
n = int(input())
d = dict()
for i in range(n):
    data = input().lower().split('\n')
    data = str(data)
    d[data] = i
print(d)

Но тогда получается полный бред
{"['ccc']": 2, "['aaa']": 0, "['bbb']": 1}
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@artem78
  1. Потому что split('\n') возвращает список из одного элемента в виде исходной строки, так как переводов строк она не содержит.
  2. См. выше.
  3. Вы это хотите получить?
    {0: 'aaaa', 1: 'bbbbb', 2: 'ccccc'}
    Тогда делайте так:
    for i in range(n):
        data = input().lower()             
        d[i] = data

Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Hrabryi
n = int(input())
my_list=[]
for i in range(n):
    my_list.append(input())
print(my_list)
Ответ написан
Комментировать
1. Метод split возвращает спиок, если хотите избавится о переноса строки, то используйте метод strip.
2. input().lower() или input().lower().strip(). Под линуксом достаточно первого варианта.
3. Какой результат вы тут хотите получить?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы