Вы можете сначала создать set
имен, а затем просто сэмплировать:
names_set = set(Names) # only unique values in a set
Names1 = random.sample(names_set, 3)
Итак, вы получите дублированные имена, потому что set
содержит уникальные значения.
Исходный метод Python абсолютно управляет.
XML не спешит анализировать и относительно трудно читать людьми. Вот почему компании как Altova находятся в бизнесе - XML не приятно отредактировать.
Источник Python db = {"a": [1, 2], "b": ...}
Быстро проанализировать.
Легкий читать людьми.
Если у Вас есть программы, которые читают и пишут гигантские словари, используют pprint
для записи так, чтобы Вы получили приятно отформатированный вывод. Что-то более легкое для чтения.
Если Вы волнуетесь по поводу мобильности, рассматриваете YAML (или JSON) для сериализации объекта. Они анализируют быстро также и очень, намного легче читать, чем XML.
Я рассмотрел бы использование одной из многих библиотек графика, доступных для Python (например, графика Python)
XML действительно ориентирован на древовидные структуры и очень подробный. Можно посмотреть на RDF для способов описать график в XML, но он все еще имеет другие недостатки, например, время, чтобы считать, проанализировать, и инстанцировать 500k + объекты и количество используемого файлового пространства.
SQL действительно ориентирован на описание строк в таблицах. Можно сохранить графики, конечно, но Вы будете видеть потерю производительности здесь также.
Я попробовал бы Python, солящий сначала, чтобы видеть, удовлетворяет ли он Ваши потребности. Это, вероятно, будет самым компактным и самым быстрым, чтобы читать в и инстанцировать всех объектов.
Действительно единственная причина использовать другие форматы состоит в том при необходимости в чем-то, что они предлагают, например, транзакции в SQL или межъязыковая обработка XML.
Если Вы будете хранить свои данные на XML-файле, то будет легче изменить (т.е. блокнот использования...), но необходимо взять в учетной записи, что чтение и парсинг всего этого объема данных от XML-файла являются напряженным режимом. Используя базу данных SQL (возможно, PostGres) сделает choiche еще немного производительный, DMBS более оптимизированы, чем прямое чтение/парсинг файловой системы. Если Вы храните все свои данные в некоторой структуре Python на отдельном файле, Вы можете, чем иметь преимущество компиляции байт-кода (.pyc), который не окрыляет в вычислительных термах, но допускает более быструю загрузку (ведьма - то, что Вы хотите). Я выбрал бы последний.
Необходимо указать проблему немного лучше. Я сделаю несколько предположений: 1) Ваши данные статичны, и Вы просто хотите искать их, 2) у Вас есть достаточно памяти для хранения его.
Если скорость запуска приложения не является критической, формат данных ваше дело, пока можно получить его в память Python. Используйте простые типы данных (dicts, списки, строки), чтобы хранить данные, не график XML, если Вы хотите получить доступ к ним быстро. Вы могли бы полагать, что запись легкого собственного класса выразила узлы и ссылки хранилища на другие узлы в dict или массиве.
Если время запуска приложения очень важно, рассмотрите загрузку Ваших данных в программе Python и солении его в файл; можно затем загрузить соленую структуру данных (который должен быть действительно быстрым) в производственном приложении.
Если с другой стороны, Ваши данные являются слишком большими для умещений в памяти, или Вы хотите смочь изменить их постоянно, Вы могли использовать SQL для устройства хранения данных (или внешний сервер или база данных SQLite) или ZODB (объектная база данных Python).
Подход файла Python, конечно, будет самым быстрым, если у Вас будет способ поддержать файл.