繁体   English   中英

嵌套理解:列表到单元素字典

[英]Nested comprehension: list of list to single element dictionary

我有一份清单。 我正在尝试将其转换为字典,其中键是子列表的 n 元素,值是列表的第一个元素。 我能够使用循环实现预期的结果,但我正在寻找一种更优雅的方式来编写它,例如使用列表理解

array = [
    [1, 2, 3],
    [5, 4, 8]
]

out = {}
for x in array:
    y = x[0]
    z = x[1:]
    for k in z:
        out[k] = y 

结果:

out = {
   2 : 1,
   3 : 1,
   4 : 5,
   8 : 5
}

首先,它有助于避免在编写推导式时创建额外的变量。

第 1 步:消除变量:

out = {}
for x in array:
    for k in x[1:]:
        out[k] = x[0]

第二步:更换图案

out = {}
for ...:
    ...
    out[k] = v

通过out = {k: v for...} ,您可以按照它们在原始代码中出现的顺序重复for子句:

out = {k: x[0] for x in array for k in x[1:]}

它做了两行来显示我做了什么,但这都可以放在一行中。

D1 = {l[0]:l[1:] for l in array}

Out = {v[x]:k for k,v in D1.items() for x in range(len(v)) }

一条龙

Out = {v[x]:k for k,v in {l[0]:l[1:] for l in array}.items() for x in range(len(v)) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM