2014-06-25 58 views
-1

是否有可能在Python中創建一個字典,並在循環中插入一個列表和值?在Python中製作字典

說我有兩個列表,看起來像這樣

for i in holders: 
    print(i) 

給...

[1, 1] 
[1, 2] 
[1, 3] 
[1, 4] 
[2, 1] 
[2, 2] 
[2, 3] 
[2, 4] 
[3, 1] 
[3, 2] 
[3, 3] 
[3, 4] 
[4, 1] 
[4, 2] 
[4, 3] 
[4, 4] 
[5, 1] 
[5, 2] 
[5, 3] 
[5, 4] 

,另一個

for row in myArray: 
    print(row) 

['0.0', '0.0', 'NaN'] 
['1.0', '0.0', '1.0'] 
['2.0', '0.0', 'NaN'] 
['3.0', '0.0', 'NaN'] 
['0.0', '1.0', '2.0'] 
['1.0', '1.0', '3.0'] 
['2.0', '1.0', '4.0'] 
['3.0', '1.0', 'NaN'] 
['0.0', '2.0', '5.0'] 
['1.0', '2.0', '6.0'] 
['2.0', '2.0', '7.0'] 
['3.0', '2.0', 'NaN'] 
['0.0', '3.0', 'NaN'] 
['1.0', '3.0', 'NaN'] 
['2.0', '3.0', '8.0'] 
['3.0', '3.0', '9.0'] 
['0.0', '4.0', 'NaN'] 
['1.0', '4.0', 'NaN'] 
['2.0', '4.0', 'NaN'] 
['3.0', '4.0', '10.0'] 

我想用Python語言編寫字典看起來像這樣

Diction = 
    { '[1,1]': '-1' 
     '[1,2]': '1' 

...等等 我想寫-1,如果行的第三個數字是NaN ,如果它比我會寫這個數字實數..

是這樣說的嗎? 我花了幾個小時思考和嘗試,沒有運氣

+0

你的代碼在哪裏?你最接近的是什麼,它究竟有什麼問題,你認爲它有什麼改進?它是否給你提供了錯誤(提供完整的追溯)或意想不到的產出(提供輸入和預期和實際產出)?當然這是可能的,但這不是一個代碼寫入服務。 – jonrsharpe

回答

1

你可以寫:

my_dict = {str(h):l[-1] if l[-1] is not 'NaN' else '-1' for h, l in zip(holders, myArray)} 

此外,你應該避免這樣myArray標識符 - 駝峯是considered bad Python style

這會給你一個額外的空間作爲一個鍵的字符串化列表,但我懷疑這是不值得取出(即如果你打算檢查與其他字符串列表的關鍵,它會創造更多的工作您)。

0
l = [[1, 1],[1, 2],[1, 3]] 

l2= [['0.0', '0.0', 'NaN'],['1.0', '0.0', '1.0'],['2.0', '0.0', 'NaN'],['3.0', '0.0', 'NaN']] 

d = {} 
for k,v in zip(l,l2): 
    if v[-1] == "NaN": 
     d[str(k)] = '-1' 
    else: 
     d[str(k)] = v[-1] 

{'[1, 2]': '1.0', '[1, 1]': '-1', '[1, 3]': '-1'}