INSTANCES for testing what your variable is. ( this is just for printing headings )
class INSTANCES:
def test_instance(self, value):
if isinstance(value, type(None)):
return "NoneType"
if isinstance(value, str):
return "string"
if isinstance(value, int):
return "int"
if isinstance(value, float):
return "float"
if isinstance(value, list):
return "list"
if isinstance(value, tuple):
return "tuple"
if isinstance(value, dict):
return "dict"
if isinstance(value, set):
return "set"
if isinstance(value, object):
return "object"
Actual Mirror Code:
class MIRROR_DATA:
def mirror(self, data):
if isinstance(data, tuple):
return tuple(map(self.mirror, reversed(data)))
elif isinstance(data, list):
return [ele for ele in reversed(data)]
elif isinstance(data, str):
return data[::-1]
elif isinstance(data, dict):
return dict(reversed(list(data.items())))
elif isinstance(data, set):
data = list(data)
data = self.mirror(data)
return data
else:
return data
example Code:
type(None) == None.__class__
types = (type(None), str, int, float, list, dict, tuple, set, object)
testdata = {0: (0, 1, 2, 3),
1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ],
2: "0,1,2,3,4,5,6,7,8,9,",
3: {0: "0,1,2,3,4,5,6,7,8,9,", 1: 123, 2: "more bullsh*t!"},
4: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }
}
for t in testdata:
nport = testdata[t]
print(f"{'-'*5} With a {INSTANCES().test_instance(nport)} {'-'*5}")
print(nport)
rport = MIRROR_DATA().mirror(nport)
if t == 4:
print(f"before conversion back to a set {rport}")
rport = set(rport)
print(f"after conversion back to a set {rport}")
print(rport)
print(f"{'-'*24}")
print()
Output:
····· With a tuple ·····
(0, 1, 2, 3)(3, 2, 1, 0)
························
····· With a list ·····
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
························
····· With a string ·····
0,1,2,3,4,5,6,7,8,9,
,9,8,7,6,5,4,3,2,1,0
························
····· With a dict ·····
{0: '0,1,2,3,4,5,6,7,8,9,', 1: 123, 2: 'more bullsh*t!'}
{2: 'more bullsh*t!', 1: 123, 0: '0,1,2,3,4,5,6,7,8,9,'}
························
····· With a set ·····
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
before conversion back to a set [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
after conversion back to a set {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
························