用Python方法从长度不等的列表中生成字典,而不填充Nones



我有一个"Id"列表,我希望将其与另一个列表中的属性(它们的"行"(关联。我已经找到了一种方法,制作更小的词典并将它们连接在一起,这很有效,但我想知道是否有更像蟒蛇的方法可以做到这一点?

代码

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)

我想以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

所需输出

和我上面的输出一样,我只是想看看是否有更好的方法?

这个dict理解应该做到:

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

最新更新