分解python中的列表理解

mou*_*ter 4 python

我有这一行理解,并试图将其分解以理解它:

 units = dict((s, [u for u in unitlist if s in u]) for s in boxes)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经提出了这个,但它没有给出相同的输出:

u = []
for s in boxes:
    for u in unitlist:
        if s in u:
            u.append(u)
            units = dict(u)
Run Code Online (Sandbox Code Playgroud)

请提供建议,并请指导我到任何我能理解如何更好地在两者之间切换的地方。我发现没有单行代码更容易理解代码。

Syn*_*ase 9

带有列表理解的原始表达式:

units = dict((s, [u for u in unitlist if s in u]) for s in boxes)
Run Code Online (Sandbox Code Playgroud)

经典再现:

units = {}

for s in boxes:
    values = []
    for u in unitlist:
        if s in u:
            values.append(u)

    units[s] = values
Run Code Online (Sandbox Code Playgroud)

你的原始表达是“用as和一个 unitlist 的子列表作为对dict()组成”key, valueskeyvalue

您的表达式还表示有一个条件:尽管所有s in boxes将在您的unitsdict 中作为键找到,但关联的值将相等或u.