2

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

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'])

如何创建有序集?

示例:如果我使用字符串“mathematics”和字符串“abcdefghiklmnopqrstuvwxyz”,则基本上新字符串应该是“MATHEICSBDFGKLNOPQRUVWXYZ”(假设我有将字符串大写的代码)。此字符串中没有“J”,因此不是拼写错误。

我试图从变量 'secret' 中获取唯一字符,并从变量 'alpha' 中获取唯一字符,并从两者中获取有序的唯一字符。

4

2 回答 2

9

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,但通常足够接近政府工作。

于 2013-10-21T16:42:07.407 回答
0

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

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

于 2013-10-21T16:37:00.033 回答