Я пытаюсь получить все значения (за исключением того, что соответствует определенному ключу) из списка dicts, делая это:Порядок значений при извлечении Python ДИКТ к списку
fv = [[v for (k,v) in d.iteritems() if k is not 'xKey'] for d in someDict]
где someDict
, как:
[{xKey:0.1,yKey:0.2,zKey:0.3},{yKey:0.9,xKey:0.7,zKey:0.4}...]
Я знаю, что у dict нет неотъемлемого порядка. Но мой список списков fv должен иметь значения в порядке. Я подумываю о том, чтобы сортировать диктофон по ключу, а затем делать то, что я только что сделал. Но это гарантированно работает?
Я знаю, что использование OrderedDict
- это вариант, но он также имеет низкую производительность по сравнению с dict, что было бы для меня проблемой, поскольку в моем словаре обычно будет огромное количество данных.
Обновление: Когда я говорю, что мне нужны значения в порядке, их действительно не нужно сортировать. Что я имею в виду - мне нужно иметь возможность каждый раз получать список значений в фиксированном детерминированном порядке. выше, я всегда хочу получить [[0.2.0.3], [0.9.0.4]], хотя это может быть не отсортированный порядок как таковой. Сортировка обеспечит соблюдение одного детерминированного порядка. Что мне действительно нужно, так это сохранение позиции значений в конечном списке. Значение yKey всегда должно быть первым значением в каждом списке, значение zKey всегда должно быть вторым значением в каждом списке и так далее, даже если ykey, zkey и т. Д. Могут быть в любом порядке в словаре.
Я бы использовал «OrderedDict», а затем измерил скорость и посмотрел, является ли производительность проблемой. Часто очень сложно прогнозировать производительность без значительного опыта в области, представляющей интерес. –
Я согласен с тем, что словарь со временем будет расти со временем, и я понимаю, что мы, возможно, не должны исправлять это, если-это-не-сломано, но я не хочу пересматривать это через неделю. – atlantis
«фиксированный детерминированный порядок ... он не может быть отсортированным порядком как таковым». У вас не может быть неопределенного, но детерминированного порядка. Это просто задание проблем со следующей версией, имеющей разные неуказанные детерминированным порядком. Пожалуйста, сделайте конечное, определенное и эффективное заявление. Функция надежды не будет хорошо работать. –