ID объекта Python - PullRequest
       11

ID объекта Python

0 голосов
/ 22 октября 2018

Я хотел бы создать идентификатор объекта в Python, я объясняю:

Я знаю, что существуют mysql, sqlite, mongoDB и т. Д ... Но я хотел бы по крайней мере создать идентификатор объекта для хранения данных вjson.

До того, как я поместил информацию о json в список, а идентификатором был индекс этого json в списке, например:

data = [{"name": userName}]
data[0]["id"] = len(data) - 1

Затем я понял, что это неправильнои, очевидно, не похожи на objectID, тогда я подумал, что идентификатором может быть дата и время вместе, но я тоже подумал, что это неправильно, поэтому я хотел бы знать лучший способ создать как objectID, который представляет этот json внутрисписок.этот список будет более длинным, предназначен для пользователей или клиентов (это просто личный проект).И как может быть пример метода для создания идентификатора

Большое спасибо, надеюсь, я объяснил хорошо.

1 Ответ

0 голосов
/ 22 октября 2018

Если вы просто хотите создать локально уникальное значение, вы можете использовать действительно простой подход автоинкремента.

data = [
    {"name": "Bill"},
    {"name": "Javier"},
    {"name": "Jane"},
    {"name": "Xi"},
    {"name": "Nosferatu"},
]

current_id = 1

for record in data:
    record["id"] = current_id
    current_id += 1
    print(record)
# {'name': 'Bill', 'id': 1}
# {'name': 'Javier', 'id': 2}
# {'name': 'Jane', 'id': 3}
# {'name': 'Xi', 'id': 4}
# {'name': 'Nosferatu', 'id': 5}

Чтобы добавить новое значение, если вы не инициализируете таким образом, вы можете получитьпоследний с max(d.get("id", 0) for d in data).

Это может вызвать различные проблемы в зависимости от вашего варианта использования.Если вы не хотите беспокоиться об этом, вы также можете добавить UUID;они тяжелее, но их легко генерировать с разумной уверенностью в уникальности.

from uuid import uuid4

data = [{"name": "Conan the Librarian"}]
data[0]["id"] = str(uuid4())
print(data)
# 'id' will be different each time; example:
# [{'name': 'Conan the Librarian', 'id': '85bb4db9-c450-46e3-a027-cb573a09f3e3'}]

Однако, не зная вашего фактического варианта использования, невозможно сказать, будет ли полезен один, один или оба этих подхода илинеобходимо.

...