My python is doing something super weird can I can't even start to understand what's going on.
I have a function like so:
def get_machine_config_by_id(machine_id):
with open(Path("xxx.json"), "r") as f:
machines = json.load(f)
machine = filter(lambda x: x['id'] == machine_id, machines)
return list(machine)[0]
which I call like so:
get_machine_config_by_id(m_id)['locator']
to get one of the properties of a machine (in this case locator
).
Now the weirdness: it comes back as a tuple, even though it's stored as a string in xxx.json. In other words the above call results in
(value,)
But it gets weirder:
#this:
get_machine_config_by_id(m_id)['locator'][0]
#produces this:
(v,) #yes, another tuple, but now with just the first letter of the string...
#while this:
temp_store = get_machine_config_by_id(m_id)['locator']
actual = temp_store[0]
#produces this:
value #finally, the actual string
How on earth is this possible?
question from:
https://stackoverflow.com/questions/65890091/python-peculiar-behavior-when-using-json-load-filter 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…