LINUX.ORG.RU

Работа со вложенными массивами

 


0

1

Имеется массив (список) вида ['абсолютная температура',['absolute temperature', 'Kelvin temperature','thermodynamic temperature']] и строка вида 'абсолютная температура - температура Т, отсчитываемая от абсолютного нуля'. Как указанную строку преобразовать к виду '['absolute temperature', 'Kelvin temperature','thermodynamic temperature'] - температура Т, отсчитываемая от абсолютного нуля'? Как после такой замены понять, где элемент в результативном массиве - вложенный массив, а где - слово (если, например, разбивать строку на массив по пробелам)?

Deleted

Как после такой замены понять, где элемент в результативном массиве - вложенный массив, а где - слово (если, например, разбивать строку на массив по пробелам)?

ЯННП

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

justAmoment ★★★★★
()

Вы не могли бы сформулировать вопрос почетче - желательно с примером?

saibogo ★★★★
()

str.replace

__builtins__.isinstance

Но мусор в голове ТСа конечно феерический и делает он через задницу.

aedeph_ ★★
()

Тоже ничего не понял

И это 2 звезды. ЛОР- дикая кунсткамера

Возможно он хотел это:

import re

def get_temp(s):
    pat = "абсолютная температура - температура ([0-9]+), отсчитываемая от абсолютного нуля"
    temp = int(re.match (pat, s).group(1))

def get_list (temp):
    [x(temp) for x in [lambda x: x, lambda x: x+273, ну ты понеял]]
panfutij
()

'absolute temperature', 'Kelvin temperature',

Вот это я тоже расшифровать не могу

panfutij
()
Ответ на: комментарий от justAmoment

Извините, что плохо объяснил. Задача следующая. Надо прочитать русско-английский словарь в массив, при этом первым элементом будет оригинал (строка 'абсолютная температура'), вторым элементом - массив с возможными переводами (['absolute temperature', 'Kelvin temperature','thermodynamic temperature']). Далее необходимо в произвольной строке заменить оригинал на переводы. Например, встречается 'абсолютная температура'. Заменить надо на массив переводов ['absolute temperature', 'Kelvin temperature','thermodynamic temperature']. Задача усложняется тем, что не получится просто разбить предложение пословно, в оригинальной фразе ('абсолютная тепмература') может быть несколько слов. Потом уже как-то отличать в результате, где просто слово, а где - вложенный массив.

Deleted
()
Ответ на: комментарий от Deleted

где просто слово, а где - вложенный массив.

А массив из одного элемента уже не массив? Сделай всё массивами.

ziemin ★★
()
Ответ на: комментарий от Deleted

Извинять тебя не за что, ты продолжаешь писать ересь и выносить всем мозг.

Брысь изучать http://ru.wikipedia.org/wiki/Массив http://ru.wikipedia.org/wiki/Список_(информатика) http://ru.wikipedia.org/wiki/Ассоциативный_массив, а сразу после связанные с ними доки по питону.

aedeph_ ★★
()
Ответ на: комментарий от Deleted

Если ты хочешь сделать именно то, что описываешь, то экстраполируя твои идеи и стремления в ближайшее будущее, могу предположить, что ты хочешь написать аналог «abbyy compreno».

http://old.computerra.ru/sgolub/663954/

http://www.computerra.ru/business/56753/obshhiy-yazyik/

Задача машинного перевода стояла перед человечеством еще в середине прошлого столетия, — объясняет глава ABBYY Сергей Андреев, который стоял у истоков проекта. — В 1960-е годы было сформулировано несколько концепций, в частности машинный перевод, основанный на правилах (rule-based machine translation), а на рубеже веков возникла другая теория — статистического перевода. Однако у всех этих концепций есть принципиальные недостатки. И самый главный из них — нет гарантий надежной передачи смысла текста. Для преодоления этого недостатка умы великих лингвистов в области машинного перевода и анализа текстов создали концепцию, основанную на использовании универсальных (не зависящих от языка) понятий, которыми мыслят все люди на Земле, и полном семантическом и синтаксическом разборе текста. Такой подход позволял бы снять неоднозначность перевода благодаря анализу текста и пониманию его смысла.

Идея была, а коммерческой реализации нет. Слишком сложно. А мы занялись ею. В течение примерно пяти лет проводили исследования в этой области, после чего начали работы по построению архитектуры. К серьезным работам по программированию базовых модулей мы приступили в 2004 году.

Я тебя отговаривать не собираюсь (в пользу эрланга, например), но если ты собираешься всё делать на питоне, то не нужно применять слово «массив», там своя терминология. На codeacedemy пройди простой курс обучения питону, если плотно заняться, то его можно за 2-3 дня пройти. После этого сразу станет понятно, что написано тут http://docs.python.org/2/tutorial/datastructures.html.

Теперь по сути сказанного тобой. То что ты описал включает в себя несколько задач, имеющие разную сложность исполнения в коде и разную оценку завершённости их исполнения. Т.е. одни задачи можно выполнить на 100%, в других только приблизить получаемый результат к желаемому за предоставленное время. Разбей всё на этапы и делай по частям.

  1. Определить структуру взаимодействия всех частей программы между собой. В строках хранятся только исходные данные и выходные данные для отображения пользователю на экран. Все манипуляции и сравнения происходят только со списками, словарями и коллекциями.
  2. Загрузить словари с переводами слов. Не нужно себя ограничивать использованием одного словаря. Сделай столько, сколько нужно.
    • Т.е., в одном словаре хранится {'apple':1, 'face':2, 'palm':3}
    • В другом {1:'apple', 2:'face', 3:'palm'}
    • В третьем {1:'яблоко', 2:'лицо', 3:'пальма', 4:'рука'}
    • В четвертом {'яблоко':1, 'лицо':2, 'пальма':3, 'рука':4}
    • В пятом перевод en -> ru {1:(1), 2:(2), 3:(3, 4)}
    • В шестом перевод ru -> en {1:(1), 2:(2), 3:(3), 4(3)}
  3. Тут самая сложная часть. Нужно сделать анализ исходного текста. Делаешь много проходов по исходному тексту, каждый раз вызывая различные оценочные функции и расставляя весовые коэффициенты найденным словосочетаниям, словам, глаголам, существительным и т.д.
  4. Теперь в соответствии с полученными весовыми коэффициентами разрезаешь исходную строку на пронумерованные куски. Получится эдакий «смысловой скелет/каркас» твоей строки. В дальнейшем все переводы и манипуляции делаешь с этим каркасом.
  5. Теперь можно по словарю из п.2 сделать перевод на другой язык.
  6. И так далее...
justAmoment ★★★★★
()
Ответ на: комментарий от Deleted

С чего вдруг неизменяемы? Это кто вам такое сказал?

>>> d = dict()
>>> d['key1'] = 1
>>> d['key2'] = 2
>>> d['key1'] = 3
>>> d
{'key2': 2, 'key1': 3}

Быть может вы с кортежами путаете?

BattleCoder ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.