aa = ({'object': 0.407, '2008': 0.325, 'concept': 0.449, 'c#': 0.222, '.net': 0.21, 'oriented': 0.41, '2012': 0.369, 'asp.net': 0.234, 'sql_server': 0.274}, {'microsoft_kinect_sdk_1.8': 1.0}, {'sql': 0.268, 'ado.net': 0.447, 'c#': 0.468, 'asp.net': 0.494, 'c++': 0.346, 'sql_server': 0.289, 'java': 0.248}, {'.net': 1.0}, {'sql_serverâ': 0.766, 'c#': 0.282, 'asp': 0.513, '.net': 0.267}, {'jquery': 0.201, 'vb': 0.49, 'prototype': 0.481, 'c#': 0.214, '.net': 0.203, 'css': 0.199, 'javascript': 0.357, 'html': 0.204, 'object-oriented': 0.376, 'java': 0.227}, {'javascript': 0.163, 'android': 0.216, 'java_ee': 0.38, 'liferay': 0.86, 'java': 0.207}, {'j2ee': 1.0}, {'javascript': 1.0}, {'android': 1.0}, {'ios': 1.0}, {'ruby': 0.432, 'rails': 0.424, 'asp.net': 0.254, 'css': 0.223, 'fphp': 0.654, 'javascript': 0.2, 'html': 0.228})
bb = {}
for i in aa:
for k, v in i.items():
bb.setdefault(k, []).append(v)
print (bb)
#output
{'object': [0.407], '2008': [0.325], 'concept': [0.449], 'c#': [0.222, 0.468, 0.282, 0.214], '.net': [0.21, 1.0, 0.267, 0.203], 'oriented': [0.41], '2012': [0.369], 'asp.net': [0.234, 0.494, 0.254], 'sql_server': [0.274, 0.289], 'microsoft_kinect_sdk_1.8': [1.0], 'sql': [0.268], 'ado.net': [0.447], 'c++': [0.346], 'java': [0.248, 0.227, 0.207], 'sql_serverâ': [0.766], 'asp': [0.513], 'jquery': [0.201], 'vb': [0.49], 'prototype': [0.481], 'css': [0.199, 0.223], 'javascript': [0.357, 0.163, 1.0, 0.2], 'html': [0.204, 0.228], 'object-oriented': [0.376], 'android': [0.216, 1.0], 'java_ee': [0.38], 'liferay': [0.86], 'j2ee': [1.0], 'ios': [1.0], 'ruby': [0.432], 'rails': [0.424], 'fphp': [0.654]}
Если вы не хотите использовать объект списка для элемента с одним значением, например, object: [0.407]
, затем вы можете преобразовать его в строку для дальнейшей обработки.
Я думаю Eclipse / EPIC имеет "немного" инструменты рефакторинга Perl..., но не заключайте мне в кавычки на этом ;-)
Могло бы также стоить проверить Комодо . Однако полная версия не является бесплатной как Eclipse / EPIC. Вы могли попробовать их версию с открытым исходным кодом Редактирование Комодо , но я предполагаю, что это не будет иметь всех функций?
я не использовал или выше или никакие другие инструменты рефакторинга... Я обхожусь vi/vim & редакторы TextMate и что они обеспечивают (или что я до сих пор нашел в каждом из этих редакторов!).
модульные тесты Создания хорошее начало. Также взгляните perltidy / Perl:: Опрятный & Perl:: Критик , который может помочь одноранговому узлу через путаницу и найти некоторые из тех "запахов кода".
Вероятно, волонтеры на Осуществляют рефакторинг: мой => 'код' может помочь Вам. Так или иначе это свободно спросить :)
В то время как это действительно не осуществляет рефакторинг ни в какой большой глубине, этот , узел PerlMonks описывает несколько отображений Vim для deobfuscating кода жемчуга с помощью B:: Deparse.
Их примеры:
можно ввести _d
, когда курсор по этой строке в нормальном режиме:
--$|&&s|\n|-|;
... и это будет заменено:
s/\n/-/ if --$|;
И эта строка:
$foo and $bar or $baz = 1;
... был бы заменен:
$baz = 1 unless $foo and $bar;
Eclipse с плагином EPIC действительно имеет некоторую поддержку рефакторинга. Не столь сложный как рефакторинг IntelliJ для инструмента Java. Не 100%, уверенных, это помогло бы с Вашей проблемой все же. Они способ, которым я использовал его, должны выделить блоки кода и переместить их в функции / методы. В Вашем случае Вы, вероятно, собираетесь хотеть сделать большой поиск/замену на тех магических числах...
я предполагаю, что Вы собираетесь использовать Тест:: Больше записать Ваши модульные тесты. Некоторые из других инструментов EPIC могли помочь с тем (например, теги "todo").
Вы могли также использовать Тест:: WWW:: Механизируйте и Тест:: WWW:: Селен - был бы полезен в Вашем случае, чтобы определить тесты селена, чтобы удостовериться, что Вы не повреждаете функциональности конечного пользователя. EPIC не имеет ничего в особенности для помощи с этим, хотя, но он должен быть возможным использовать его для неродной через код при отладке.
Удача. :-)
Динамический характер Perl означает, что очень трудно создать инструменты рефакторинга для него.
Однако относительно тестирования Вас должен смочь соединить некоторые регрессионные тесты для помощи Вам на Вашем пути. Это работает путем запуска с кода, как это теперь и получение его текущей производительности. Это могло бы запускать скрипт CGI от командной строки и сохранять результирующий HTML в файл.
, После того как Вы получили это, можно изменить код и поскольку Вы идете проверка, чтобы видеть, что HTML не изменился, что означает, что код не повредился. Когда изменения действительно происходят, можно затем или найти ошибку или изменить тест для принятия нового HTML как корректный.
Это может быть чем-то вроде тяжелой работы для установки, но сделает жизнь легче в конечном счете. Необходимо попытаться автоматизировать эти тесты для создания легкого для выполнения. Тест контроля:: WWW:: Механизируйте и Тест:: LongString, а также все другие.
vim
! (Или любой другой текстовый редактор)
действительно нет волшебного инструмента к линзовому телескопу Ваш код, существуют инструменты вокруг, чтобы (например), переименовать переменные/функции, но нет никакого способа, которым он может волшебно зафиксировать ужасную структуру кода или странную логику.
См. Devel :: Refactor - расширение Perl для рефакторинга кода Perl. https://metacpan.org/pod/Devel::Refactor