Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2010 16:03:49

flighttothemoon
От:
Зарегистрирован: 2010-12-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

Есть словарь. Например, такой:

{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, то идем другой дорогой:



Отредактировано (Дек. 9, 2010 16:17:17)

Офлайн

#2 Дек. 9, 2010 17:46:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

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:
....



Офлайн

#3 Дек. 9, 2010 18:48:35

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

Офлайн

#4 Дек. 10, 2010 15:28:40

flighttothemoon
От:
Зарегистрирован: 2010-12-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

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}
В чем может быть дело?



Офлайн

#5 Дек. 10, 2010 20:08:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

немного спешил когда постил, надеялся будет понятна идея.
надо вызывать фукнцию для итерирования объектов словаря

b=dict([(name,i) for (i,name) in a.iteritems()])



Отредактировано (Дек. 10, 2010 20:10:18)

Офлайн

#6 Дек. 11, 2010 00:29:45

flighttothemoon
От:
Зарегистрирован: 2010-12-05
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

Проблема осталась.

Используя код:

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). Не пойму, почему так происходит.



Офлайн

#7 Дек. 11, 2010 01:51:23

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Словарь - какое значение идет первым

ну а что непонятно? в словаре не может быть два одинаковых ключа, а значение по этому ключу равно последнему присвоению (кто последний тот и папа :) )

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



Отредактировано (Дек. 11, 2010 01:52:40)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version