从列表的词典列出理解

Sus*_*ant 4 python list-comprehension

我有一个字典 -

a = {'b': [1,2,3], 'c':[4,5,6]}
Run Code Online (Sandbox Code Playgroud)

我只想使用list comprehension来实现这个输出 -

[['c', 4], ['c', 5], ['c', 6], ['b', 1], ['b', 2], ['b', 3]]
Run Code Online (Sandbox Code Playgroud)

一个简单的for循环完成它 -

x = []
for k, v in a.iteritems():
    for i in v:
        x.append([k, i])
Run Code Online (Sandbox Code Playgroud)

试图将其转换为列表理解,我这样做 -

[[k,i] for i in v for k, v in a.items()]
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,我得到了一个输出

[['c', 1], ['b', 1], ['c', 2], ['b', 2], ['c', 3], ['b', 3]]
Run Code Online (Sandbox Code Playgroud)

什么应该是正确的列表理解,为什么我的列表理解不起作用?

Moh*_*nki 8

b = [[i, j] for i in a for j in a[i]]
Run Code Online (Sandbox Code Playgroud)

对于for列表推导中的嵌套循环,第一个循环将是你将在第二i个循环中使用的变量,例如在第二个循环中使用,例如在列表中使用嵌套for循环难以阅读因此你应该更好地避免它.