Найти - Пользователи
Полная версия: Словарь - какое значение идет первым
Начало » Python для новичков » Словарь - какое значение идет первым
1
flighttothemoon
Есть словарь. Например, такой:
{0: 'PtpMotion', 1: 'PtpMotion', 2: 'LinMotion', 3: 'LinMotion', 4: 'LinMotion', 5: 'LinMotion', 6: 'LinMotion', 7: 'LinMotion', 8: 'LinMotion', 9: 'PtpMotion', 10: 'LinMotion', 11: 'Wait'}
Ключи словаря - индексы от 0 и далее. Значения - LinMotion, PtpMotion и другие.
Задача - “вычислить”, какое значение из двух (LinMotion или PtpMotion) идет перым (по индексу).
Далее, если LinMotion идет перед PtpMotion, то идем одной дорогой:
Если же PtpMotion идет перед LinMotion, то идем другой дорогой:
doza_and
a={0: 'PtpMotion', 1: 'PtpMotion', 2: 'LinMotion', 3: 'LinMotion', 4: 'LinMotion', 5: 'LinMotion', 6: 'LinMotion', 7: 'LinMotion', 8: 'LinMotion', 9: 'PtpMotion', 10: 'LinMotion', 11: 'Wait'}
b=dict([name,i for i,name in a])
if b['LinMotion '] <b['PtpMotion'] :
....
elif:
....
slav0nic
http://docs.python.org/library/collections.html#collections.OrderedDict

либо sorted(ydict)
flighttothemoon
doza_and
У меня почему-то выводит ошибку в этом месте b=dict()
Версия Python у меня 2.7
Попробовал следующий код:
                routine = {}
....#Заполется словарь routine
sorted_routine = {}
for key, value in routine.items():
sorted_routine[value] = key
Итог - в словаре значения меняются на ключи, но только две последние пары.
{'LinMotion': 10, 'PtpMotion': 9}
В чем может быть дело?
doza_and
немного спешил когда постил, надеялся будет понятна идея.
надо вызывать фукнцию для итерирования объектов словаря
b=dict([(name,i) for (i,name) in a.iteritems()])
flighttothemoon
Проблема осталась.

Используя код:
a = {0: 'PtpMotion', 1: 'PtpMotion', 2: 'LinMotion', 3: 'LinMotion', 4: 'LinMotion', 5: 'LinMotion', 6: 'LinMotion', 7: 'LinMotion', 8: 'LinMotion', 9: 'PtpMotion', 10: 'LinMotion', 11: 'Wait'}
b=dict([(name,i) for (i,name) in a.iteritems()])
print b
Получаю результат:
{'LinMotion': 10, 'PtpMotion': 9, 'Wait': 11}
То есть значения и ключи поменялись местами, но потеряны некоторые пары. Видимо, из-за дублированных значений (много раз присутствует как LinMotion, так и PtpMotion). Не пойму, почему так происходит.
sp3
ну а что непонятно? в словаре не может быть два одинаковых ключа, а значение по этому ключу равно последнему присвоению (кто последний тот и папа :) )

a = {0: 'PtpMotion', 1: 'PtpMotion', 2: 'LinMotion', 3: 'LinMotion', 4: 'LinMotion', 5: 'LinMotion', 6: 'LinMotion', 7: 'LinMotion', 8: 'LinMotion', 9: 'PtpMotion', 10: 'LinMotion', 11: 'Wait'}
key = a.keys()
key.sort()
if a[key[0]] == 'LinMotion ':
pass
else:
pass
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB