2016-03-05 6 views
1

Я пытаюсь написать процедуру ориентации для 3-осевого акселерометра. Часть, на которую я застрял, есть, у меня есть один диктофон, указав всю мою ось, после чтения «оси z», я хочу удалить эту ось из списка Availableiable_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 из ваших чтений? Кстати, я не думаю, что словарь является хорошим хранилищем для этих данных. Словари (Hashtables) хороши для быстрого поиска необязательных ключей, но у вас есть последовательные данные. Список или массив numpy будут достаточно хороши. Если вам нужны имена столбцов, посмотрите на панды. – roadrunner66

+0

'Available_axis' - это список, а не dict. pop() для списка принимает только один необязательный аргумент, значение индекса. –

ответ

1

Available_axis - это список. При появлении из списка необходимо указать целое число.

У вас также может быть краткий список, который удаляет целевую переменную.

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

Отлично! благодаря! –

Смежные вопросы