如何订购套装?

时间:2013-10-21 16:33:36

标签: python python-2.7 set

编辑:谢谢。我假设集合是有序的,因为输出几乎按字母顺序排列。但是,我想要一个有序集。

def create_table(secret):    
    sec = set(secret) 
    alpha = set("abcdefghiklmnopqrstuvwxyz")
    bet = alpha - sec

    newSecret = secret & bet

    print newSecret



 OUTPUT:  set(['A', 'C', 'B', 'E', 'D', 'G', 'F', 'I', 'H', 'K', 'M', 'L', 'O', 'N', 'Q', 'P', 'S', 'R', 'U', 'T', 'W', 'V', 'Y', 'X', 'Z'])

如何创建有序集?

示例:如果我取字符串“mathics”和字符串“abcdefghiklmnopqrstuvwxyz”,基本上新字符串应为“MATHEICSBDFGKLNOPQRUVWXYZ”(假设我的代码大写字符串)。这个字符串中没有'J',所以它不是拼写错误。

我正在尝试从变量'alpha'获取唯一字符,从变量'alpha'中获取唯一字符,并从两者中获取有序唯一字符。

2 个答案:

答案 0 :(得分:5)

Python没有OrderedSet;通常我们用OrderedDict伪造它。

例如:

>>> from collections import OrderedDict
>>> s = "mathematics"
>>> alpha = "abcdefghiklmnopqrstuvwxyz"
>>> d = OrderedDict.fromkeys(s+alpha)
>>> d
OrderedDict([('m', None), ('a', None), ('t', None), ('h', None), ('e', None), ('i', None), ('c', None), ('s', None), ('b', None), ('d', None), ('f', None), ('g', None), ('k', None), ('l', None), ('n', None), ('o', None), ('p', None), ('q', None), ('r', None), ('u', None), ('v', None), ('w', None), ('x', None), ('y', None), ('z', None)])
>>> ''.join(d)
'matheicsbdfgklnopqruvwxyz'

这不像OrderedSet那样有效,但通常足够接近政府工作。

答案 1 :(得分:0)

听起来你想要一个有序集合,按第一个字符串中第一次出现的项目排序,或者(对于第一个字符串中不存在的项目)第一次出现的项目第二个字符串。

最简单的方法是拥有一个集合和一个字符串。迭代第一个字符串;对于每个项目,如果它不在集合中,则将其添加到集合中并将其附加到字符串。然后对第二个字符串执行相同的操作。