Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
182 views
in Technique[技术] by (71.8m points)

Python: peculiar behavior when using json.load() / filter()

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...