2016-03-05 133 views
1

我正在嘗試爲3軸加速度計編寫一個方向例程。我卡住的部分是,我有一個詞典,列出了所有我的軸',在讀取'z軸'後,我想從Availiable_axis列表中刪除該軸。這是我的代碼的一部分,它演示了我正在嘗試做什麼。刪除基於Python中的字典值的數組項目

import operator 

Readings1 = { 0:{'x':0.1, 'y':-1, 'z':-0.1}, 1:{'x':.4, 'y':-.1, 'z':-0.1}, 
     2:{'x':-0.4, 'y':-.8, 'z':-0.1}, 3:{'x':0.1, 'y':-.1, 'z':-0.6}, 
     4:{'x':0.1, 'y':-.2, 'z':0.4}} 

SetupValue = {'Axis':{'x-axis':'x','y-axis':'y','z-axis':'z'}} 

Available_axis = [SetupValue['Axis']['x-axis'], SetupValue['Axis']['y-axis'], SetupValue['Axis']['z-axis']] 
axes = Readings1[0] 

print axes 

for key in axes: 
    axes[key] = abs(axes[key]) 

print axes 


print (max(axes.iteritems(), key = operator.itemgetter(1))[0]) 
Available_axis.pop(max(axes.iteritems(), key = operator.itemgetter(1))[0],0) 

任何幫助,將不勝感激。

+0

爲什麼/如何不是代碼工作? –

+0

'Available_axis.pop() print Available_axis' - >'(x,y)'...或者你還想從你的讀數中刪除z軸嗎?順便說一句,我不認爲字典是這類數據的好商店。字典(哈希表)適用於快速查找非順序密鑰,但您擁有順序數據。列表或numpy數組就足夠好了。如果你想要列名,看看熊貓。 – roadrunner66

+0

'Available_axis'是一個列表,而不是字典。 pop()列表只接受一個可選參數,一個索引值。 –

回答

1

Available_axis是一個列表。從列表中彈出時,必須指定整數的位置。

你也可以有一個簡短的列表理解,刪除目標變量。

Available_axis = [x for x in Available_axis 
        if x != max(axes.iteritems(), key = operator.itemgetter(1))[0]] 
+0

完美!謝謝! –