#python #list
#питон #Список
Вопрос:
Я пытаюсь создать многомерный dict и список в Python, где первая запись уникальна (dict), и внутри этой записи может быть несколько записей (list).
Например (диктант со списком):
{'0001': ['Value 1 for id 0001', 'Value 2 for id 0001', 'Value 3 for id 0001']}
Это сработало бы, как бы я ни хотел иметь возможность получить доступ к моему dict / list с помощью чего-то вроде этого: myList[0][1]
и я хотел бы, чтобы он вернул 'Value 2 for id 0001'
Я не совсем уверен, куда идти дальше, и я начинаю думать, что я понял все это неправильно, поскольку я использую a dict
, чтобы иметь возможность создавать уникальную первую запись и вторую запись list
с несколькими значениями.
queue = {}
def add_to_dict(dict, key, values):
"""Append multiple values to a key in dict"""
if key not in dict:
dict[key] = list()
dict[key].extend(values)
return dict
add_to_dict(queue, '0001', ['Value 1 for id 0001'])
add_to_dict(queue, '0001', ['Value 2 for id 0001'])
add_to_dict(queue, '0001', ['Value 3 for id 0001'])
res = {key: queue[key] for key in queue.keys() amp; {'0001'}}
print(res)
Выходной сигнал:
{'0001': ['Value 1 for id 0001', 'Value 2 for id 0001', 'Value 3 for id 0001']}
Как я могу перейти отсюда, чтобы иметь доступ 0001
к и index 1
?
print(queue[0][1]) # I want this to return "Value 2 for id 0001"
Вышесказанное не сработает, но это та часть, которую я хотел бы заставить работать.
Первый [] должен быть уникальным, но должен содержать несколько значений во втором списке.
Дайте мне знать в комментариях, если я что-то упустил, и я обновлю вопрос.
Комментарии:
1.
list(queue.values())[0][1]
?2. @анон01 well…to будьте по-настоящему быстрыми — используйте C с идеальной оптимизацией и прямым доступом к памяти — c вам поможет
3. @anon01 автор на самом деле не уточнил, чего он хочет, остальное — просто предположения
4. @Nick ваш комментарий фактически решил все это. Спасибо!
5. «Это сработало бы, как бы мне ни хотелось иметь доступ к моему dict / list с помощью чего-то вроде этого:
myList[0][1]
и я хотел бы, чтобы это вернулось'Value 2 for id 0001'
» Никогда ничего не говорилось о производительности ^^
Ответ №1:
используйте list вместо dict…
queue = [['Value %d for id d'%(n 1,i 1) for n in range(3)] for i in range(1)]
print(queue[0][1])
'Value 2 for id 0001'
Вы можете использовать dict, но кажется излишним:
queueDict = {i 1:['Value %d for id d'%(n 1,i 1) for n in range(3)] for i in range(1)}
print(queue[0][1])
'Value 2 for id 0001'