我有一个相当复杂的RDD数据结构,可用于pagerank算法(这是家庭作业问题的一部分):
[('4', (0.09090909090909091, ({'1': 1, '2': 1}, 2))),
('10', (0.09090909090909091, ({'5': 1}, 1))),
('3', (0.09090909090909091, ({'2': 1}, 1))),
('6', (0.09090909090909091, ({'2': 1, '5': 1}, 2))),
('7', (0.09090909090909091, ({'2': 1, '5': 1}, 2))),
('1', (0.09090909090909091, None)),
('8', (0.09090909090909091, ({'2': 1, '5': 1}, 2))),
('9', (0.09090909090909091, ({'2': 1, '5': 1}, 2))),
('2', (0.09090909090909091, ({'3': 1}, 1))),
('5', (0.09090909090909091, ({'4': 1, '2': 1, '6': 1}, 3))),
('11', (0.09090909090909091, ({'5': 1}, 1)))]
作为算法的一部分,我只需要更改该浮点数,但是我确实需要能够访问记录的每个部分。目前,我可以使用类似以下内容的最终元组:
testRDD.map(lambda x: (x[0], x[1][1])).collect()
但是在这一点上,我无法访问元组第二部分的字典,或者会出现NoneType错误,或者如果使用ast.literal_eval()则会出现格式错误的节点/字符串错误。我知道为什么会这样,但是我仍然不确定如何在元组中访问字典及其后的值。