#python #list #dictionary
#python #Список #словарь
Вопрос:
Я не уверен, что dict — лучший способ сделать это. Если нет, я был бы рад, если бы вы, ребята, могли подсказать мне лучший способ сделать это.
Я хочу сохранить usernames
, и внутри этого я хочу сохранить list of objects
. Например.
Name: 'Sophy',
Lst: [ object1, object2, object3... ],
Name: 'Osprey',
Lst: [ object1, object2, object3... ],
....
Дело в том, что я не уверен, что dict — это то, что я ищу. и если это так, я не уверен, как сделать так, чтобы dict выглядел так. Мне также нужно будет позже перебирать все объекты каждого пользователя.
Ответ №1:
это очень открытый, вы можете делать различные вещи, такие как
- сделайте это словарем с ключом именем пользователя и значением любого вашего списка
data = {'Sophy':[ object1, object2, object3... ], 'Osprey':[ object1, object2, object3... ], ... }
- список словарей
data = [ {"Name": 'Sophy', "Lst": [ object1, object2, object3... ]}, {"Name": 'Osprey', "Lst": [ object1, object2, object3... ]}, ... ]
- класс
class User: def __init__(self,name, lst): self.name=name self.lst=lst data = [User('Sophy', [ object1, object2, object3... ]), User('Osprey', [ object1, object2, object3... ]), ... ]
среди прочего…
Комментарии:
1. Класс был именно тем, что я искал, спасибо!
Ответ №2:
Список кортежей или словарей кажется правильным решением.
Словарь:
data = [{'Sophy': [ object1, object2, object3... ]}, {'Osprey': [ object1, object2, object3... ]}, ....]
Для итерации по нему:
for dict in data:
name = dict.keys()
for obj in dict.values():
print(obj)
Кортеж:
data = [('Sophy', [ object1, object2, object3... ]), ('Osprey', [ object1, object2, object3... ]), ....]
Для итерации по нему:
for i in data:
name = i[0]
for obj in i[1]:
print(obj)
Я думаю, что использование кортежей здесь имеет больше смысла.
Ответ №3:
Может быть, посмотрите на json
формат. В основном вложенный словарь.
Комментарии:
1. JSON здесь неуместен, в OP ничего не упоминается о сериализации
2. Нет? JSON — это формат сериализации на основе текста. Здесь это просто не имеет значения, OP спрашивает, какие структуры данных использовать, а не какой формат сериализации
3. И все же. Использование
json
формата, о котором я уже говорил, — это хороший способ. Например,{"sophie" : {"lis" : [object1, object2, object3...]}, "osprey": {"lis" : [object1, object2, object3]}}
4. Я не думаю, что вы понимаете, JSON — это формат сериализации . Говорить, что здесь следует использовать формат JSON, является ошибкой категории. То, что вы показали, например, даже не является допустимым JSON, но это допустимый Python. JSON — это не «вложенный словарь», это текст
5. Это действительно в python? так что, другими словами, я был прав, это хороший способ сделать это.
Ответ №4:
Вам нужен словарь.
>>> my_names = dict()
>>> my_names['sophy']=['object1', 'object2']
>>> my_names
{'sophy': ['object1', 'object2']}
Здесь ‘object1’ может быть вашим объектом вместо строки.
Для итерации вы можете сделать что-то вроде,
>>> for key,value in my_names.items():
... print(f"{key} : {value}")
...
sophy : ['object1', 'object2']