2012-08-07 40 views
0

我有以下:列表修改使用dictionarys(Python)的

list = [['1234-4321-1',[5, 6, -4, 11, 22]], ['8763-1234-1', [43, -5, 0, 0, -1]], ['1234-5376-1', [3, 0, -5, -6, 0]]] 

reversed__dict = {'8763-1234-1'} 

我想写一个循环,在列表上循环,当它检测reversed_dict举行的逆转值重新安排串永久(更改为“1234-8763-1”,即头两个部分交换),也将其相应的int值乘以-1。

我曾尝试以下:

for i, x in list: 
    if i in ordered_dict: 
     p = (x * -1) 
return list[p] 

但我只是不断收到“回归”和语法错误,也该不会尝试重新安排“8763-1234-1”

期望结束结果是:

>>list 
    >>[['1234-4321-1',[5, 6, -4, 11, 22]], ['1234-8763-1', [-43, 5, 0, 0, 1]], ['1234-5376-1', [3, 0, -5, -6, 0]]] 

帮助不多,非常感谢。

回答

0
for val in lst: 
    num = val[0] 
    if num in reversed_set: 
     parts = num.split('-') 
     val[0] = '-'.join([parts[1], parts[0], parts[2]]) 

>> lst 
[['1234-4321-1', [5, 6, -4, 11, 22]], ['1234-8763-1', [43, -5, 0, 0, -1]], ['1234-5376-1', [3, 0, -5, -6, 0]]] 

顺便说一句,{'8763-1234-1'}不是一个字典,它是一个集合。使用“list”作为变量的名称并不是一个好主意。

此外,你试图通过将列表乘以-1来实现什么?

+1

user1532369希望列表中与匹配字符串相关的数字乘以-1。它在问题中说。 – ygram 2012-08-07 11:25:54

+0

@ygram谢谢:) – user1532369 2012-08-07 12:40:43

+0

@User我很清楚列表不是一个变量名,我只是用它来理解。我可以在if语句内添加额外的行val [1] = val [1] * -1吗? – user1532369 2012-08-07 12:43:03