EDIT: Thanks. I assumed sets were ordered since the output is almost in alphabetical order. But yes I want an ordered 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'])
How do I create an ordered set?
Example: If I take the string "mathematics" and the string "abcdefghiklmnopqrstuvwxyz", essentially the new string should be "MATHEICSBDFGKLNOPQRUVWXYZ" (assuming i have the code to uppercase the string). There is no 'J' in this string so it isn't a typo.
I'm trying to take the unique characters from the variable 'secret' and unique characters from the variable 'alpha' and get ordered unique characters from both.
Python doesn't have an OrderedSet; usually we fake it with an OrderedDict.
For example:
>>> 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'
This doesn't quite work as well as an OrderedSet would, but is often close enough for government work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With