Python:生成字符串索引

时间:2016-05-25 13:50:28

标签: python string loops

我有一个"字符串索引列表"遵循这种模式构建:

allIndexes = ['A', 'B', 'C'... 'Z', 'AA', 'AB',... 'AZ'... 'ZZ', 'AAA', 'AAB'...]

现在,让我们说我想创建一个新的唯一索引。到目前为止,这是我的代码:

import string

indexes = ['A', 'AA', 'CB', 'B', 'H', 'IZ']

x = 0
for i in indexes:

    if string.ascii_uppercase[x] == i:
        x += 1

    else:
        newIndex = string.ascii_uppercase[x]

print newIndex
>>> C

适用于' A'的条目。到' Z',但我如何才能使其适用于模式之后的任何索引?

我的意思是,给定一个"字符串索引"的无序列表,如何找到不在该列表中出现的最低字符串索引?
在代码示例中,列表包含" A"和" B",所以下一个最低的字符串索引是" C"。但是如果列表不包含长度为1的所有字符串索引,代码就会失败。假设索引是[" A"," B",..." Z& #34;," AA"]。然后newIndex应为" AB"。

1 个答案:

答案 0 :(得分:1)

import string
from itertools import product

indexes = set(['A', 'AA', 'CB', 'B', 'H', 'IZ'])
all_indexes = set([''])
unused_indexes = set()

while (unused_indexes == set()):
    all_indexes = set([''.join(p) for p in product(all_indexes, list(string.ascii_uppercase))])
    unused_indexes = all_indexes - indexes
print(unused_indexes) # this prints out all indexes that are available at that length
print(sorted(list(unused_indexes))[0]) # this prints out the first available index
>>> C