【问题标题】:Pythonic way to make a dictionary from lists of unequal length without padding NonesPythonic 方法从长度不等的列表制作字典而不填充无
【发布时间】:2022-01-20 04:41:03
【问题描述】:

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

代码

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

期望的输出

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

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    这个 dict-comprehension 应该可以做到:

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

    【讨论】:

    • 哇,这当然更符合pythonic,我什至不知道有字典理解这样的东西。谢谢你,维姆。
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2017-04-07
    • 2016-12-04
    • 1970-01-01
    • 2022-01-16
    • 2016-02-11
    相关资源
    最近更新 更多