2015-07-07 3 views
-4

Я хочу создать уникальный идентификатор, который будет содержать 10 символов. Они будут содержать 32 символа/цифры I.e 'a' to 'v' и '0' to '9'.python unique id генерация

Аддитивно повторяющиеся символы запрещены, например, «1hdhusiit» в этом «ii» смежна.

Каждый ключ должен быть уникальным.

+2

https://docs.python.org/3.4/library/uuid.html – TigerhawkT3

+6

Привет и добро пожаловать в переполнение стека. здесь мы ожидаем, что вы сами решите проблему, сообщите нам, что вы исследовали, и покажите нам код, который вы пробовали (даже если он не работает), чтобы мы могли вам помочь , Пойдите, затем вернитесь и покажите нам, что вы пробовали. –

ответ

-1
def unique_id(): 
    available_chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', \ 
    'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', \ 
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; 
    available_char_count = len(available_chars) 
    timestamp = int(time.time() * 1000) 
    # First char 
    char_index = timestamp % available_char_count 
    timestamp /= available_char_count 
    uuid = available_chars[char_index] 
    last_char = available_chars[char_index] 
    available_char_count -= 1 
    for i in xrange(9): 
     currently_available_chars = list(available_chars) 
     currently_available_chars.remove(last_char) 
     char_index = timestamp % available_char_count 
     timestamp /= available_char_count 
     uuid = currently_available_chars[char_index] + uuid 
     last_char = currently_available_chars[char_index] 
    return uuid 

Это должно работать, если ваша система не обеспечивает поддержку time.time() за 1 секунду при резолюции. Если это так, это позволит генерировать только один уникальный уникальный идентификатор в секунду.

+0

Это не предотвращает повторные символы. И это дает очень предсказуемые идентификаторы. – augurar

+0

@augurar Отредактировано для исправления повторяющейся проблемы с символами. И вы ничего не сказали о том, чтобы сделать их непредсказуемыми. Ближе всего вы, скорее всего, попадете в непредсказуемый уникальный ключ - хешируете что-то, но, как указано [здесь] (http://stackoverflow.com/a/2444336/4103025), хеши не * гарантированы *, чтобы быть уникальными (хотя это очень, очень вероятно). Но если вы хотите действительно уникальные ключи, они должны быть предсказуемыми. Именно это позволяет вам с уверенностью сказать, что они уникальны. – bytesized

+0

Большое спасибо @bytesized, что так помогает и с вами приятно, я обязательно это сделаю, и могу ли я использовать ваш твиттер? :) – uroosa