2013-12-05 3 views
-1

Я работаю над скриптом, который будет запускать цикл над входным файлом и извлекать и/или изменять некоторые слова в текстовом файле. В зависимости от параметра из консоли значения переменных всех переменных из вложенных циклов будут соответствующим образом изменены.Как назначить несколько строк одному ключу в словаре?

Мой вопрос: что было бы лучшим способом хранения значений переменных для всех допустимых параметров? Я рассматривал использование словаря, однако я не уверен, смогу ли я хранить более одной строки на один ключ? По сути, я хотел бы получить набор строк и присвоить их значения набору переменных - на основе значения ключа. Какой-то «вложенный» словарь, эквивалентный двумерному массиву в Java.

Пожалуйста, помогите мне найти подходящее (лучшее и быстрое) решение.

спасибо.

+6

Нам нужно увидеть некоторые из кода, который вы пробовали. Если вы не уверены, что словарь будет работать, прочитайте ли вы документацию Python по типу словаря? Вы пытались закодировать то, что, по вашему мнению, будет работать? Вы получили ошибку, обратную линию, показывая, где вы поступили неправильно? –

+0

@nemo Добро пожаловать в переполнение стека. Вы найдете это очень полезным местом, чтобы получить ответы на ваши вопросы программирования *, когда * вы отправляете код и результаты, показывающие, что происходит неправильно. Вопросы без кода сложнее ответить и часто закрыты. –

+0

Python действительно не заботится о типах, поэтому вы можете хранить строки и строковые списки в одном и том же dict. Вы можете использовать проверку, чтобы увидеть, есть ли что-то строка или список, прежде чем работать с ним. Лучше просто сохранить список из 1 строки, в первую очередь. Также см. Defaultdict, чтобы вы могли автоматически инициализировать созданные элементы dict в [] (пустые списки). – leewz

ответ

1

Надеется, что это один может помочь

Использования кортежа или списка для кратной строки

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

my_dict = { 
    1:("Hello", "World"), 
    2:("Stackoverflow", "is", "Great") 
} 
+0

Мне нравится эта идея. Я постараюсь это реализовать. Интересно, есть ли какое-нибудь «более быстрое» решение? Простите меня, если это глупый вопрос, но мой опыт работы с Python очень мало. Спасибо – nemo

+0

@nemo, возможно, вам нужно больше времени с Python, прежде чем беспокоиться о производительности. Простой лучше, когда вы изучаете что-то новое.Если у вас нет огромных данных прямо сейчас, вы можете беспокоиться о более быстром решении, иначе это будет [преждевременная оптимизация] (http://c2.com/cgi/wiki?PrematureOptimization). – Yeo

0

Возможно, вы можете попробовать сохранить файл в формате json.

Для того, чтобы быстро и точно выполнить требование получения и назначения, (k, v) и (v, k) должны храниться в значении json, например, как инвертированная таблица. Пример кода,

формат JSON (структура данных):

{k1: [v1, v2], к2: [v1], v1: [k1, k2], v2: [k1]}

В O (1) можно выполнить две операции.

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