我应该将嵌套列表转换为字典。 如果我有这个清单:
data=[[['1','2','-2'], ['3','-1','4']]
我希望它成为:
d={(0, 0): 1, (0, 1): 3, (1, 0): 2, (1, 1): -1, (2, 0): -2, (2, 1): 4}
棘手的部分是我需要将此列表视为矩阵:
'1','2','-2'
'3','-1','4'
因此字典中的键应该是它们在该矩阵中的位置。我很困惑,我试过了:
for m in range(len(data)):
for n in range(len(data[m])):
d[(m,n)]= data[n][m]
我知道这是错误的,因为它会超出范围。我很挣扎。
答案 0 :(得分:0)
您当前的data
语法无效,但我相信这就是您要找的内容:
data= [['1','2','-2'], ['3','-1','4']]
new_result = {(a, i):data[i][a] for i in range(len(data)) for a in range(len(data[0]))}
输出:
{(0, 1): '3', (0, 0): '1', (2, 1): '4', (2, 0): '-2', (1, 0): '2', (1, 1): '-1'}
答案 1 :(得分:0)
我相信你的清单已经代表了你想要的东西,只是有些倒置。您说要js.ExecuteScript(jsfile + "$('#[sourceElement]').simulateDragDrop({dropTarget: '#[targetElement]'})");
获取matrix[(2,1)]
。而4
真的很难吗?但由于您认为反转是必不可少的,因此您可以通过这种方式转换列表列表。
data[1][2]
更可读的方法是编写一个函数来进行反演,而不是重新组织数据:
>>> data=[['1','2','-2'], ['3','-1','4']] # I corrected your mismatched parens
>>> matrix={}
>>> for x, a in enumerate(zip(*data)):
for y, b in enumerate(a):
matrix[(x,y)] = int(b)
>>> matrix
{(0, 0): 1, (0, 1): 3, (1, 0): 2, (1, 1): -1, (2, 0): -2, (2, 1): 4}
>>> matrix[(2,1)]
4
答案 2 :(得分:0)
我个人认为长期理解看起来不直观,所以:
for y, rows in enumerate(data):
for x, col in enumerate(rows):
d[(x,y)] = col