2012-06-02 4 views
1

Мне нужно изменить знак с положительного на отрицательный в кортеже, который находится в словаре. Поэтому, если у меня есть позиция: (3,4) «Мне нужно изменить ее на« позицию: (3, -4) ». Это то, что у меня есть, но это не работает.Как перебирать кортежи в словаре

for k,v in positionD.items(): 
    v = (v[0],-v[1]) 
    positionNewD[k] = v 
+0

Вы хотите изменить 'positionD'? –

+2

Как это не работает? Ваш код кажется прекрасным ... – Cameron

+0

Вы получаете исключение. Если так, то, что это? Синтаксически ваш код правильный. – sizzzzlerz

ответ

0

Попробуйте это (требуется Python> = 2,7):

positionNewD = {k: (x, -y) for k, (x, y) in positionD.iteritems()} 

Для более старых версий:

positionNewD = dict((k, (x, -y)) for k, (x, y) in positionD.iteritems()) 
+1

Нет необходимо для параметра '[]' в вашем варианте «более старых версий» - опустив его, используется выражение генератора, которое может быть более эффективным, так как ему не нужно создавать список. – Amber

+0

@Amber Вы являетесь ab solutely right – spatar

+0

Если, конечно, это действительно старая версия, которая не поддерживает генераторные выражения :) –

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