2013-03-03 2 views
-2

У меня есть упорядоченный словарь, как следующее:Вставить номер в список

source =([('a',[1,2,3,4,5,6,7,11,13,17]),('b',[1,2,3,12])]) 

Я хочу первым вычислить длину значения каждого ключа, а затем вычислить sqrt его, говорят, что это L.

Вставьте L в положение, которое можно разделить без остатка, и вставить «1» после другого номера.

Например, source['a'] = [1,2,3,4,5,6,7,11,13,17] длина его равна 9. Таким образом, SQRT из len(source['a']) равно 3.

Вставить номер 3 в положении, которое может быть разделено на 3 точно (например. Положении 3, положении 6, положении 9) если положение номера не может быть разделено точно на 3, тогда вставьте 1 после него.

Чтобы получить результат, как folloing:

result=([('a',["1,1","2,1","3,3","4,1","5,1","6,3","7,1","11,1","13,3","10,1"]),('b',["1,1","2,2","3,1","12,2"])] 

Я не знаю, как изменить элемент в списке в строку пары. Кстати, это не мое домашнее задание, я пытался построить логический механизм восстановления, исходные данные слишком велики, поэтому я просто создал простой пример, чтобы объяснить, что я хочу достичь :)

+0

Если это стандартный словарь Python, то он не упорядочен. Вам нужно использовать collection.OrderedDict (может быть, вы это делаете?). – uselpa

+0

Это всегда хорошая идея, чтобы показать нам, что вы пытались или что, по вашему мнению, может решить проблему, даже если это совершенно неправильно. – Kev

ответ

2

Как кажется чтобы быть домашней работой, я постараюсь помочь вам с той частью, с которой вы столкнулись с проблемой:

Я не знаю, как изменить элемент в списке на пару строк.

Как весь список должен быть обновлен, его лучше воссоздать его, а не обновлять его на месте, хотя его можно как списки изменяемые

Рассмотрим список

lst = [1,2,3,4,5] 

конвертировать это список строк, вы можете использовать список понимание

lst = [str(e) for e in lst] 

вы также можете использовать встроенный map как map(str,lst), но вам нужно помнить, чем в Py3.X, карта возвращает объект карты, поэтому она должна быть обработана соответствующим образом

Состояния в понимании лучше всего выражается в виде условного оператора

<TRUE-STATEMENT> if <condition> else <FALSE-STATEMENT> 

Чтобы получить индекс любого элемента в списке, лучше ставка использовать встроенный enumerate

Если вам необходимо создать форматированный строковое выражение из последовательности элементов, его предложил использовать format string specifier

"{},{}".format(a,b) 

Длина любой последовательности, включающей в себя list можно рассчитать с помощью встроенного в len

Вы можете использовать оператор ** с дробной степенью или использовать math модуль и вызовите функцию sqrt для вычисления квадратного корня

Теперь вам просто нужно объединить каждое из приведенных выше предложений, чтобы решить вашу проблему.

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

  • Нет связанных вопросов^_^