gpt4 book ai didi

python - 在 Python 中重写这个嵌套的 IF 语句的正确方法是什么

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:24 25 4
gpt4 key购买 nike

我有一个结构如下的字典:

{ "123" : {"red" : ['some text', datetime.datetime(2011, 8, 23, 3, 19, 38), status]},
"456" : {"red" : ['some other text', datetime.datetime(2013, 8, 23, 3, 19, 38), status],
"blue" : ['some more text', datetime.datetime(2010, 8, 23, 3, 19, 38), status]},
"789" : {"blue" : ['random text', datetime.datetime(2012, 8, 23, 3, 19, 38), status],
"yellow" : ['text', datetime.datetime(2009, 8, 23, 3, 19, 38), status]}}

现在我有一些逻辑来更新这本字典。它首先检查一个条目是否已经存在于这个字典中,如果存在,则子条目是否存在,然后比较时间和更新。如果其中一个不存在,它会创建一个新条目:

if example_id in my_directory:
if color in my_directory[example_id]:
if time > my_directory[example_id][color][1]:
my_directory[example_id][color] = [text, time, status]
else:
my_directory[example_id] = {color : [text, time, status]}
else:
my_directory[example_id] = {color : [text, time, status]}

显然,timecolorstatus 作为已经存在的变量传递。重写此 IF 语句以不重复第二个和第三个目录更新命令的正确方法是什么?谢谢!

最佳答案

正如其他人所说,使用 defaultdict:

my_dictionary = collections.defaultdict(
lambda: collections.defaultdict(
lambda: (None, datetime.datetime.min, None)))

# populate my_dictionary

_, old_time, _ = my_dictionary[example_id][color]
if time > old_time:
# NB: tuples make more sense here than lists
my_directory[example_id][color] = (text, time, status)

这将临时添加一个 (None, datetime.datetime.min, None) 元组到您的字典,然后用实际值替换它。

关于python - 在 Python 中重写这个嵌套的 IF 语句的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26760287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com