избегайте дублирования имен ключей, добавляя суффикс - PullRequest
3 голосов
/ 08 мая 2011

Мне нужно иметь свой заголовок в качестве имени ключа, проблема в том, что это может вызвать проблемы с дублирующимися именами ключей, как я могу проверить, существует ли он, и добавить -1 в конец, если он есть, или добавить -2 в конец, если - 1 существует.

keyName = "hello"
duplicates = Entry.get_by_key_name(keyName)
            if duplicates:
                keyName = keyName+("-1")

Как мне пройти по циклу добавления 1, пока я не найду уникальное имя?

любая помощь высоко ценится J

Ответы [ 2 ]

3 голосов
/ 08 мая 2011
keyName = "hello"

testName = keyName
suffix = 0
while Entry.get_by_key_name(testName):
  suffix += 1
  testName = "%s-%d" % (keyName, suffix)

keyName = testName
2 голосов
/ 08 мая 2011

Другой способ думать о проблеме:

from itertools import imap, dropwhile, count

def make_name(i):
    stem = "foo"
    return stem if i == 0 else "{0}-{1}".format(stem, i)

def in_universe(name):
    return bool(Entry.get_by_key_name(name))

seq = dropwhile(in_universe, imap(make_name, count()))
keyName = seq.next()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...