Форум сайта python.su
Есть словарь. Например, такой:
{0: 'PtpMotion', 1: 'PtpMotion', 2: 'LinMotion', 3: 'LinMotion', 4: 'LinMotion', 5: 'LinMotion', 6: 'LinMotion', 7: 'LinMotion', 8: 'LinMotion', 9: 'PtpMotion', 10: 'LinMotion', 11: 'Wait'}
Отредактировано (Дек. 9, 2010 16:17:17)
Офлайн
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:
....
Офлайн
http://docs.python.org/library/collections.html#collections.OrderedDict
либо sorted(ydict)
Офлайн
doza_andУ меня почему-то выводит ошибку в этом месте b=dict()
routine = {}
....#Заполется словарь routine
sorted_routine = {}
for key, value in routine.items():
sorted_routine[value] = key
{'LinMotion': 10, 'PtpMotion': 9}
Офлайн
немного спешил когда постил, надеялся будет понятна идея.
надо вызывать фукнцию для итерирования объектов словаря
b=dict([(name,i) for (i,name) in a.iteritems()])
Отредактировано (Дек. 10, 2010 20:10:18)
Офлайн
Проблема осталась.
Используя код:
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}
Офлайн
ну а что непонятно? в словаре не может быть два одинаковых ключа, а значение по этому ключу равно последнему присвоению (кто последний тот и папа :) )
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)
Офлайн