'''
created for stack overflow question
https://stackoverflow.com/questions/65965140/how-to-convert-a-list-word-to-a-dictionary-key-and-to-a-string-at-end
usage:
invoke from command line with no arguments to use parameters present in question.
otherwise invoke with 2 arguments
e.g. maptuples <tuplelist.txt> <mapdict.txt>
'''
def mapem(iterable, mapping):
dd = {v: k for k, v in mapping.items()}
for t in iterable:
mapped = dd.get(t)
if mapped:
yield mapped
if __name__ == '__main__':
from sys import argv
if len(argv) < 3:
d = {'J': (133, 101, 150), 'n': (130, 99, 225), '1': (163, 201, 196), 'r': (212, 212, 235), 'S': (248, 128, 245), '8': (65, 244, 22), 'f': (22, 213, 90), 'U': (173, 66, 188)}
tl = [(133, 101, 150), (130, 99, 225), (163, 201, 196), (212, 212, 235), (248, 128, 245), (190, 239, 125), (123, 202, 119), (107, 58, 33), (161, 135, 209), (108, 105, 192)]
print(''.join(mapem(tl, d)))
else:
from ast import literal_eval
with open(argv[1]) as ftup:
tuples = literal_eval(ftup.read())
with open(argv[2]) as fdict:
mapping = literal_eval(fdict.read())
with open('tupresult.txt', 'w') as fout:
for letter in mapem(tuples, mapping):
fout.write(letter)
with open('tupresult.txt') as f:
print(f.read())
JycnCiAgICBjcmVhdGVkIGZvciBzdGFjayBvdmVyZmxvdyBxdWVzdGlvbgogICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjU5NjUxNDAvaG93LXRvLWNvbnZlcnQtYS1saXN0LXdvcmQtdG8tYS1kaWN0aW9uYXJ5LWtleS1hbmQtdG8tYS1zdHJpbmctYXQtZW5kCgogICAgdXNhZ2U6CiAgICBpbnZva2UgZnJvbSBjb21tYW5kIGxpbmUgd2l0aCBubyBhcmd1bWVudHMgdG8gdXNlIHBhcmFtZXRlcnMgcHJlc2VudCBpbiBxdWVzdGlvbi4KICAgIG90aGVyd2lzZSBpbnZva2Ugd2l0aCAyIGFyZ3VtZW50cwogICAgZS5nLiBtYXB0dXBsZXMgPHR1cGxlbGlzdC50eHQ+IDxtYXBkaWN0LnR4dD4KJycnCgpkZWYgbWFwZW0oaXRlcmFibGUsIG1hcHBpbmcpOgogICAgZGQgPSB7djogayBmb3IgaywgdiBpbiBtYXBwaW5nLml0ZW1zKCl9CiAgICBmb3IgdCBpbiBpdGVyYWJsZToKICAgICAgICBtYXBwZWQgPSBkZC5nZXQodCkKICAgICAgICBpZiBtYXBwZWQ6CiAgICAgICAgICAgIHlpZWxkIG1hcHBlZAoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBmcm9tIHN5cyBpbXBvcnQgYXJndgogICAgaWYgbGVuKGFyZ3YpIDwgMzoKICAgICAgICBkID0geydKJzogKDEzMywgMTAxLCAxNTApLCAnbic6ICgxMzAsIDk5LCAyMjUpLCAnMSc6ICgxNjMsIDIwMSwgMTk2KSwgJ3InOiAoMjEyLCAyMTIsIDIzNSksICdTJzogKDI0OCwgMTI4LCAyNDUpLCAnOCc6ICg2NSwgMjQ0LCAyMiksICdmJzogKDIyLCAyMTMsIDkwKSwgJ1UnOiAoMTczLCA2NiwgMTg4KX0KICAgICAgICB0bCA9IFsoMTMzLCAxMDEsIDE1MCksICgxMzAsIDk5LCAyMjUpLCAoMTYzLCAyMDEsIDE5NiksICgyMTIsIDIxMiwgMjM1KSwgKDI0OCwgMTI4LCAyNDUpLCAoMTkwLCAyMzksIDEyNSksICgxMjMsIDIwMiwgMTE5KSwgKDEwNywgNTgsIDMzKSwgKDE2MSwgMTM1LCAyMDkpLCAoMTA4LCAxMDUsIDE5MildCiAgICAgICAgcHJpbnQoJycuam9pbihtYXBlbSh0bCwgZCkpKQogICAgZWxzZToKICAgICAgICBmcm9tIGFzdCBpbXBvcnQgbGl0ZXJhbF9ldmFsCiAgICAgICAgd2l0aCBvcGVuKGFyZ3ZbMV0pIGFzIGZ0dXA6CiAgICAgICAgICAgIHR1cGxlcyA9IGxpdGVyYWxfZXZhbChmdHVwLnJlYWQoKSkKICAgICAgICB3aXRoIG9wZW4oYXJndlsyXSkgYXMgZmRpY3Q6CiAgICAgICAgICAgIG1hcHBpbmcgPSBsaXRlcmFsX2V2YWwoZmRpY3QucmVhZCgpKQoKICAgICAgICB3aXRoIG9wZW4oJ3R1cHJlc3VsdC50eHQnLCAndycpIGFzIGZvdXQ6CiAgICAgICAgICAgIGZvciBsZXR0ZXIgaW4gbWFwZW0odHVwbGVzLCBtYXBwaW5nKToKICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGV0dGVyKQogICAgICAgICAgICAKICAgICAgICB3aXRoIG9wZW4oJ3R1cHJlc3VsdC50eHQnKSBhcyBmOgogICAgICAgICAgICBwcmludChmLnJlYWQoKSkK