2012-08-07 52 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