我有一个"字符串索引列表"遵循这种模式构建:
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"。
答案 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