提取嵌套字典python中的所有组合

提取嵌套字典python中的所有组合,python,dictionary,pyspark,pyspark-sql,Python,Dictionary,Pyspark,Pyspark Sql,我有一本字典,像: {'6400': {'6401': '1.0', '6407': '0.3333333333333333', '6536': '0.0', '6448': '0.0'}} 我想制作一个类似于Pyspark的结构: ('6400',['6400','6401','1.0']) ('6400',['6400','6407','0.3333333333333333']) ('6400',['6400','6536','0.0']) ('6400',['6400','6448','

我有一本字典,像:

{'6400': {'6401': '1.0', '6407': '0.3333333333333333', '6536': '0.0', '6448': '0.0'}}
我想制作一个类似于Pyspark的结构:

('6400',['6400','6401','1.0'])
('6400',['6400','6407','0.3333333333333333'])
('6400',['6400','6536','0.0'])
('6400',['6400','6448','0.0'])

如果在python中执行此操作,则可以使用以下代码生成所需的结构

d = {'6400': {'6401': '1.0', '6407': '0.3333333333333333', '6536': 
'0.0', '6448': '0.0'}}
result = []
for outer_e in d:
    for inner_e in d[outer_e]:
        e = [outer_e, inner_e, d[outer_e][inner_e]]
        e = (outer_e, e)
        result.append(e)

有点笨重,但另一种解决问题的方法:

In [1]: d = {'6400': {'6401': '1.0', '6407': '0.3333333333333333', '6536': '0.0'
   ...: , '6448': '0.0'}}

In [2]: map(lambda item: [(item[0], [item[0], *i]) for i in item[1].items()], d.items())
Out[2]: <map at 0x104563e48>

In [3]: list(_)
Out[3]:
[[('6400', ['6400', '6401', '1.0']),
  ('6400', ['6400', '6407', '0.3333333333333333']),
  ('6400', ['6400', '6536', '0.0']),
  ('6400', ['6400', '6448', '0.0'])]]
[1]中的
d={'6400':{'6401':'1.0','6407':'0.3333','6536':'0.0'
...: , '6448': '0.0'}}
[2]中:映射(lambda项:[(项[0],[项[0],*i]),用于项[1]中的i.items(),d.items())
出[2]:
在[3]中:列表
出[3]:
[[('6400', ['6400', '6401', '1.0']),
('6400', ['6400', '6407', '0.3333333333333333']),
('6400', ['6400', '6536', '0.0']),
('6400', ['6400', '6448', '0.0'])]]

并且由于无序代码<代码> DICT< /Cord>对象,您不能依赖订单。< /P>可能的杰瑞米@ PyStPad标签的复制品。抱歉纠正的错字。您能用Python解决它并尝试将其适应PySpice吗?可以考虑使用DIST ITEM()、IdTraveScript(重复)和ZIP()。非常感谢您的帮助。