希望这个标题不太清楚,我想添加一个嵌套字典理解,其基本目标是使用循环添加节点属性i NetworkX,输出类似于:
[('x1', {'a': 0}, {'b': 5}, {'c': 10} ),
('x2', {'a': 1}, {'b': 6}, {'c': 11} ),
...]
我认为可行的方法:
a = [ ( 'x%d' % h, {'1st': i}, {'2nd': j}, {'3rd': k} )
for h in range(1,17), for i in range(0,6),
for j in range(5,11), for k in range(10,16) ]
但是这返回了" SyntaxError:无效的语法"。
编辑:我将在另一个问题中提出前面提到的第二部分 - 到目前为止,谢谢!
答案 0 :(得分:2)
您的代码中存在语法错误:for
之前的逗号无效。您只需要按照the previous answer中的说明删除它们。但是,它的行为类似于嵌套的for
循环,而您希望h, i, j, k
同时增加。可以按如下方式实现所需的输出:
[ ( 'x%d' % h, {'1st': i}, {'2nd': j}, {'3rd': k} )
for h, i, j, k in zip(range(1,17), range(0,6), range(5,11), range(10,16))]
甚至更好:
[ ( 'x%d' % (i+1), {'1st': i}, {'2nd': i+5}, {'3rd': i+10} ) for i in range(6)]
答案 1 :(得分:1)
删除for循环之间的,
:
a = [ ('x%d' % h, {'1st': i}, {'2nd': j}, {'3rd': k}) for h in range(1,17) for i in range(0,6) for j in range(5,11) for k in range(10,16) ]