Одномерный ассоциативный массив или альтернатива ему

Автор karpo518, 2 февраля 2017, 13:52

0 Пользователи и 1 гость просматривают эту тему.

karpo518

Требуется хранить пары из строковых ключей и строковых значений. Подскажите, какую конструкцию можно использовать для таких целей?
Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2

JohnSUN

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

karpo518

Не более 10. Собираюсь в цикле проверять значения некоторых свойств каждой строки, собирать их в ассоциативный массив, который потом будет использоваться для форматирования строк в унифицированном, абстрагированном от API формате.
Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2

economist

Если предполагается многократная обработка и объем очень большой - то лучше хранить их в таблице (Base/Calc) или даже в TXT-файле с разделителем "табуляция".
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

А если <10 - то зачем вообще массив? Обращение по индексу - здесь будет не быстрее чем полный перебор.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

karpo518

Для начала я пробегаю итератором по таблице параметров и определяю значения параметров для конкретной строки. Далее  в коде я несколько раз использую значения параметров не в итераторе, а по ключу. Всё это делается в цикле для каждой строки. Сейчас мне нужна сущность, которая будет хранить таблицу параметров и предоставлять доступ к ней как в итераторе, так и по ключу.
Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2


karpo518

rami, в упрощённом виде на альтернативном ЯП кейс использования выглядит так:


$parametrs = array('bold'=> 0, 'italic'=> 0, 'link'=>'');

for($i=0; $i < sizeof($strs);$i++)
{
$str = $strs[$i];

foreach($parametrs as $style => $value)
{
$parametrs[$style] = detectStyle($style, $str);
}

if($parametrs['bold'] && $parametrs['link'] == '')
{
$str = clear($str,'bold');
$str = format($str, 'bold');
}

........
        ........
        ........
        ........

$strs[$i] = $str;
}
Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2

economist

karpo518 - вы бы описали вкратце конечную цель, может быть есть способ проще чем "прослойка" для форматирования. Многие из нас делали подобное для чего-то другого, отличного от OpenOffice|LibreOffice. И может велик уже существует.

Я например, 5 лет глядел мимо Автотекста OpenOffice|LibreOffice, городя тонны быдлокода на Python/SB. А оказалось всё проще. 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

karpo518

Ребята, так много уточняющих вопросов и ни одного совета по теме. В VB для Microsoft Office есть такие сущности, как List, Collection. Что-то из этого поддерживается в макросах? Если поддерживается, то как это использовать? economist, у меня есть готовый код, который нужно "причесать". Осталось понять, мне городить свои функции для работы с json-подобным форматом данных, или всё-таки в макросе можно использовать что-то готовое.
Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2

economist

karpo518 - с такими объемами можете городить что угодно: всё будет одинаково быстро.

Если хочется академической чистоты (Lists, Collections, Tuples, Dictionaries, Slices, Str's, Sets) - добро пожаловать в Python3. В OOLO он мощен.   
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...