Pythonic 方法从不等长的列表创建字典,无需填充 None

Win*_*y71 8 python dictionary list

我有一个“ID”列表,我希望将其与另一个列表中的属性(它们的“行”)关联起来。我找到了一种方法来做到这一点,通过制作较小的字典并将它们连接在一起,这是有效的,但我想知道是否有一种更Pythonic的方法来做到这一点?

代码

row1 = list(range(1, 6, 1))
row2 = list(range(6, 11, 1))
row3 = list(range(11, 16, 1))
row4 = list(range(16, 21, 1))

row1_dict = {}
row2_dict = {}
row3_dict = {}
row4_dict = {}

for n in row1:
    row1_dict[n] = 1
for n in row2:
    row2_dict[n] = 2
for n in row3:
    row3_dict[n] = 3
for n in row4:
    row4_dict[n] = 4

id_to_row_dict = {}
id_to_row_dict = {**row1_dict, **row2_dict, **row3_dict, **row4_dict}
print('\n')
for k, v in id_to_row_dict.items():
    print(k, " : ", v)
Run Code Online (Sandbox Code Playgroud)

我想以Python方式更多地复制的字典的输出

1  :  1
2  :  1
3  :  1
4  :  1
5  :  1
6  :  2
7  :  2
8  :  2
9  :  2
10  :  2
11  :  3
12  :  3
13  :  3
14  :  3
15  :  3
16  :  4
17  :  4
18  :  4
19  :  4
20  :  4
Run Code Online (Sandbox Code Playgroud)

所需输出

与我上面的输出相同,我只是想看看是否有更好的方法来做到这一点?

wim*_*wim 10

这个字典理解应该做到这一点:

rows = [row1, row2, row3, row4]
{k: v for v, row in enumerate(rows, 1) for k in row}
Run Code Online (Sandbox Code Playgroud)