Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 17

Составление словаря из n - ключей и m - значений

04.04.2020, 14:05. Показов 4009. Ответов 24

Студворк — интернет-сервис помощи студентам
Python 3.5, windows.

Подскажите, пожалуйста, алгоритм чтобы составить словарь из n-ключей и m- значений.

Входные данные:
a={‘x’:’1,2,3′, ’y’:’22,33’, … 'n':'m'}
n,m может быть любой длинны.

Надо чтобы получилось так:

b={[{‘x’:’1′,’y’:22’,…’n’:’m’}],[{‘x’:’1′,’y’:33′..’n’:’m’}],[{‘x’:’2′,’y’:22’…’n’:’m’}],[{‘x’:’2′,’y’:33’…’n’:’m’}],[{‘x’:’3′,’y’:22’…’n’:’m’}],[{‘x’:’3′,’y’:33’…’n’:’m’}]}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2020, 14:05
Ответы с готовыми решениями:

Python - найти список значений ключей словаря вложенного в списки
Добрый день уважаемые форумчане. Вопрос такой: Есть список - d, и список ключей l: d = , , , ] l =

Превратить первый список в набор ключей словаря, а второй список добавить к каждому ключу словаря в виде списка
Даны два списка с одинаковым количеством элементов. Создать новый словарь. Превратить первый список в набор ключей словаря, а второй список...

Сортировка ключей словаря
Здравствуйте:) Существует словарь следующего вида: {'35': 1, '45': 2, '56': 3, '76': 4, '24': 5} Нужно отсортировать ключи данного...

24
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.04.2020, 17:01
Студворк — интернет-сервис помощи студентам
pasapasa,
Это не будет работать в других версиях Python (ниже 3.6) потому что там порядок ключей в словарях не соблюдается.
А твой код завязан на соблюдении порядка ключей.
0
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 17
04.04.2020, 18:35  [ТС]
Garry Galler,
Ок, учту.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.04.2020, 00:38
pasapasa, Для трех ключей в исходном словаре у Вас все нормально работает. Думал, что для количества ключей больше трех работать не будет. Однако и для четырех ключей Ваш код сработал, вот только вывел словари в списке как то в разброс, хотя и все в полном объеме. Можно предположить, что и для большого количества ключей будет выводить все необходимые словари, хоть и в разброс.
Python
1
2
3
4
5
6
import itertools
from pprint import pprint
 
a = {'x': '1,2,3', 'y': '22,33', 'z': 'a,b,c', 'q': '55,66,77,88'}
b = [dict(zip(a, yy)) for yy in itertools.product(*(xx.split(',') for xx in a.values()))]
pprint(b)
Выводит:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[{'q': '55', 'x': '1', 'y': '22', 'z': 'a'},
 {'q': '66', 'x': '1', 'y': '22', 'z': 'a'},
 {'q': '77', 'x': '1', 'y': '22', 'z': 'a'},
 {'q': '88', 'x': '1', 'y': '22', 'z': 'a'},
 {'q': '55', 'x': '1', 'y': '22', 'z': 'b'},
 {'q': '66', 'x': '1', 'y': '22', 'z': 'b'},
 {'q': '77', 'x': '1', 'y': '22', 'z': 'b'},
 {'q': '88', 'x': '1', 'y': '22', 'z': 'b'},
 {'q': '55', 'x': '1', 'y': '22', 'z': 'c'},
 {'q': '66', 'x': '1', 'y': '22', 'z': 'c'},
 {'q': '77', 'x': '1', 'y': '22', 'z': 'c'},
 {'q': '88', 'x': '1', 'y': '22', 'z': 'c'},
 {'q': '55', 'x': '1', 'y': '33', 'z': 'a'},
 {'q': '66', 'x': '1', 'y': '33', 'z': 'a'},
 {'q': '77', 'x': '1', 'y': '33', 'z': 'a'},
 {'q': '88', 'x': '1', 'y': '33', 'z': 'a'},
 {'q': '55', 'x': '1', 'y': '33', 'z': 'b'},
 {'q': '66', 'x': '1', 'y': '33', 'z': 'b'},
 {'q': '77', 'x': '1', 'y': '33', 'z': 'b'},
 {'q': '88', 'x': '1', 'y': '33', 'z': 'b'},
 {'q': '55', 'x': '1', 'y': '33', 'z': 'c'},
 {'q': '66', 'x': '1', 'y': '33', 'z': 'c'},
 {'q': '77', 'x': '1', 'y': '33', 'z': 'c'},
 {'q': '88', 'x': '1', 'y': '33', 'z': 'c'},
 {'q': '55', 'x': '2', 'y': '22', 'z': 'a'},
 {'q': '66', 'x': '2', 'y': '22', 'z': 'a'},
 {'q': '77', 'x': '2', 'y': '22', 'z': 'a'},
 {'q': '88', 'x': '2', 'y': '22', 'z': 'a'},
 {'q': '55', 'x': '2', 'y': '22', 'z': 'b'},
 {'q': '66', 'x': '2', 'y': '22', 'z': 'b'},
 {'q': '77', 'x': '2', 'y': '22', 'z': 'b'},
 {'q': '88', 'x': '2', 'y': '22', 'z': 'b'},
 {'q': '55', 'x': '2', 'y': '22', 'z': 'c'},
 {'q': '66', 'x': '2', 'y': '22', 'z': 'c'},
 {'q': '77', 'x': '2', 'y': '22', 'z': 'c'},
 {'q': '88', 'x': '2', 'y': '22', 'z': 'c'},
 {'q': '55', 'x': '2', 'y': '33', 'z': 'a'},
 {'q': '66', 'x': '2', 'y': '33', 'z': 'a'},
 {'q': '77', 'x': '2', 'y': '33', 'z': 'a'},
 {'q': '88', 'x': '2', 'y': '33', 'z': 'a'},
 {'q': '55', 'x': '2', 'y': '33', 'z': 'b'},
 {'q': '66', 'x': '2', 'y': '33', 'z': 'b'},
 {'q': '77', 'x': '2', 'y': '33', 'z': 'b'},
 {'q': '88', 'x': '2', 'y': '33', 'z': 'b'},
 {'q': '55', 'x': '2', 'y': '33', 'z': 'c'},
 {'q': '66', 'x': '2', 'y': '33', 'z': 'c'},
 {'q': '77', 'x': '2', 'y': '33', 'z': 'c'},
 {'q': '88', 'x': '2', 'y': '33', 'z': 'c'},
 {'q': '55', 'x': '3', 'y': '22', 'z': 'a'},
 {'q': '66', 'x': '3', 'y': '22', 'z': 'a'},
 {'q': '77', 'x': '3', 'y': '22', 'z': 'a'},
 {'q': '88', 'x': '3', 'y': '22', 'z': 'a'},
 {'q': '55', 'x': '3', 'y': '22', 'z': 'b'},
 {'q': '66', 'x': '3', 'y': '22', 'z': 'b'},
 {'q': '77', 'x': '3', 'y': '22', 'z': 'b'},
 {'q': '88', 'x': '3', 'y': '22', 'z': 'b'},
 {'q': '55', 'x': '3', 'y': '22', 'z': 'c'},
 {'q': '66', 'x': '3', 'y': '22', 'z': 'c'},
 {'q': '77', 'x': '3', 'y': '22', 'z': 'c'},
 {'q': '88', 'x': '3', 'y': '22', 'z': 'c'},
 {'q': '55', 'x': '3', 'y': '33', 'z': 'a'},
 {'q': '66', 'x': '3', 'y': '33', 'z': 'a'},
 {'q': '77', 'x': '3', 'y': '33', 'z': 'a'},
 {'q': '88', 'x': '3', 'y': '33', 'z': 'a'},
 {'q': '55', 'x': '3', 'y': '33', 'z': 'b'},
 {'q': '66', 'x': '3', 'y': '33', 'z': 'b'},
 {'q': '77', 'x': '3', 'y': '33', 'z': 'b'},
 {'q': '88', 'x': '3', 'y': '33', 'z': 'b'},
 {'q': '55', 'x': '3', 'y': '33', 'z': 'c'},
 {'q': '66', 'x': '3', 'y': '33', 'z': 'c'},
 {'q': '77', 'x': '3', 'y': '33', 'z': 'c'},
 {'q': '88', 'x': '3', 'y': '33', 'z': 'c'}]

Почему то последний ключ выводит первым.
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.04.2020, 01:21
Цитата Сообщение от Viktorrus Посмотреть сообщение
Можно предположить, что и для большого количества ключей будет выводить все необходимые словари, хоть и в разброс
Если порядок извлечения a.values() будет всегда совпадать с порядком извлечения a.keys() (ключи у ТС в функции zip извлекаются), ну тогда даже в Python 3.5 и ниже, где словарь неупорядочен все-таки такой код будет работать. Но лично я даже на такой порядок все равно бы не надеялся. В конце концов, есть надежный в плане упорядоченности OrderedDict, который существует с версии 2.7 и который гарантирует абсолютный порядок извлечения ключей. Либо, можно вообще обойтись обычным списком кортежей.

Добавлено через 21 минуту
P.S. Впрочем, все-таки код будет работать, потому что порядок keys() идентичен порядку values():
Python
1
2
3
4
>>> a = {str(i):str(i) for i in [random.randint(0,1000) for _ in range(100000)]}
>>> list(a.keys()) == list(a.values())
True
>>>
Но внутри словаря, естественно, порядка начальной вставки ключей не будет, если ваша версия Python ниже 3.6.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.04.2020, 01:49
Цитата Сообщение от Garry Galler Посмотреть сообщение
Но внутри словаря, естественно, порядка начальной вставки ключей не будет
Про это честно говоря я как то и забыл. Спасибо что напомнили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2020, 01:49

Восстановление значения ключей словаря
Восстановить значение ключей словаря, если значение переменной s1 равно апельсин, а значение переменной s2 равно спаниель. dct = {...:...

Составление словаря биграмм
Нужно составить словарь, который для каждого слова W хранит вторую часть V, наиболее частотной биграммы (W, V), начинающейся с W. Ключи...

Составление английского словаря
Привет всем. У меня такая проблема, я пишу прогу, англо-русский словарь. Работает прога так: Пользователь вводит в edit английское слово, а...

Задача на составление словаря
Здравствуйте, пытаюсь решить задачу: Пользователь вводит число k — количество автомобилей. Затем он вводит k автомобилей в формате:...

Вывод ключей словаря по порядку с значениями от наибольшего к меньшему
Есть код, надо чтобы выводил ключи словаря по порядку основываясь на их значения от наибольшего к наименьшему. Если есть ключи с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru