вложено в словарь python - PullRequest
0 голосов
/ 10 июля 2020

У меня есть вложенный список, который выглядит так:

[[0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0],
 [0, 36, 112, 123, 25, 117, 55, 26, 17, 113, 121, 118, 107, 114, 104, 64, 0]]

, и я хотел бы преобразовать его в словарь следующего вида:

{1:[0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0],
 2:[0, 36, 112, 123, 25, 117, 55, 26, 17, 113, 121, 118, 107, 114, 104, 64, 0]}

Я пытался сделайте это в понимании списка, но я не могу найти правильный ответ. Не получается, так как я бы хотел запустить 1, а не 0.

Ответы [ 4 ]

1 голос
/ 10 июля 2020
lst = [
    [0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0],
    [0, 36, 112, 123, 25, 117, 55, 26, 17, 113, 121, 118, 107, 114, 104, 64, 0],
]

result = {index: sub_list for index, sub_list in enumerate(lst, start=1)}


print(result)

Вывод:

{
    1: [0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0],
    2: [0, 36, 112, 123, 25, 117, 55, 26, 17, 113, 121, 118, 107, 114, 104, 64, 0],
}
1 голос
/ 10 июля 2020

Вы можете использовать dict comprehension вместо понимания списка, используя range(len(a):

output = {i+1:a[i] for i in range(len(a))}

Вывод:

{1: [0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0],
 2: [0,36,112,123,25,117,55,26,17,113,121,118,107,114,104,64,0]}
0 голосов
/ 10 июля 2020

Вот как я это сделал:

lis=[[0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0],
     [0, 36, 112, 123, 25, 117, 55, 26, 17, 113, 121, 118, 107, 114, 104, 64, 0]]
dicti={}
for i in range(1,len(lis)+1):
    dicti[i]=lis[i-1]
print(dicti)

Я создал пустой **dictionary**. Затем я повторил list и добавил values из dictionary, присваивая целые числа, keys.

Обратите внимание, как я использовал range(1, len(lis)+1), так что i имеет первое значение как 1.

Затем мы можем добавить пары key:value к dictionary, используя for loop.

Это дает желаемый результат:

{1: [0, 100, 47, 105, 120, 4, 46, 115, 103, 131, 14, 74, 8, 122, 91, 0], 2: [0, 36, 112, 123, 25, 117, 55, 26, 17, 113, 121, 118, 107, 114, 104, 64, 0]}

Надеюсь, это было полезно!

0 голосов
/ 10 июля 2020
from itertools import count

lists = ...

print(dict(zip(count(1), lists)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...