Превращение строки целых чисел в список и сортировка по нечетным и четным элементам - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть строка целых чисел, например string = {11, 2, 14, 1, 17, 1, 123, 1} Что мне нужно сделать, это превратить ее в список, а затем отсортировать их в два отдельных списка нечетных и четных элементов.

У меня был словарь, который выглядел как {11: 2, 14: 1, 17: 1, 123: 1}, преобразовал его в строку и удалил двоеточия в запятые, так что теперь у меня есть первая строка. Я сделал это, чтобы разделить элементы на числа 11, 14, 17 и 123 в одном списке и 2, 1, 1 и 1 в другом списке.

Я думаю, что могу преобразовать эту строку в список, а затем использовать цикл, чтобы добавить каждый элемент в список, которым я должен быть. Проблема в том, что я не могу понять, как снова превратить эту строку в список. Как бы я это сделал? Или же я могу разделить значения так, как я хочу, прямо из словаря и сохранить шаги? Спасибо за любую помощь

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Преобразование строк не требуется. На самом деле, нет необходимости создавать список всех ключей для вашей проблемы. Вы можете использовать collections.defaultdict и повторять свой словарь:

from collections import defaultdict

x = {11: 2, 14: 1, 17: 1, 123: 1}

dd = defaultdict(list)

for key in x:
    dd['odd' if key % 2 else 'even'].append(key)

Результатом является словарное отображение нечетных и четных ключей:

defaultdict(list, {'odd': [11, 17, 123],
                   'even': [14]})

Затем вы можете получить доступ к нечетным клавишам через dd['odd'], четным клавишам через dd['even'].

0 голосов
/ 11 ноября 2018

Чтобы разбить строку на целые, используйте встроенный метод split, чтобы получить список каждого из элементов:

new_list = string.split(", ")
0 голосов
/ 11 ноября 2018

Да, вы можете разделить значения прямо из словаря! Вы бы использовали .keys() и .values() для объекта словаря.

>>> obj = {11: 2, 14: 1, 17: 1, 123: 1}
>>> list(obj.keys())
[123, 17, 11, 14]
>>> list(obj.values())
[1, 1, 2, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...