2017-07-10 204 views
-4

提取所有組合我有一個像一本字典:嵌套字典蟒蛇

{'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']) 
+0

[在嵌套字典中生成所有可能的組合]可能的副本(https://stackoverflow.com/questions/12178291/generating-all-possible-combinations-in-a-nested-dictionary) – Jeremy

+0

@Jeremy No pyspark標籤雖然。 –

+0

抱歉更正了錯字。 – Tanveer

回答

1

如果你這樣做在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) 
1

小有點笨重,但另一種方式來解決問題:

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'])]] 

而且由於它的無序dict對象,你不能靠命令。

+0

非常感謝您的幫助。 ! – Tanveer