我是python的新手,我正在尝试学习编写非常快速的代码的最佳方法。我正在做一个处理嵌套字典的练习,这是我正在使用的字典:
{
"key_1": [
{
"title": <title>,
"date": <date>,
"text": <text>
}
],
"key_2": [
{
"title": <title>,
"date": <date>,
"text": <text>
}
],
"key_3": [
{
"title": <title>,
"date": <date>,
"text": <text>
}
]
}
这是我编写的用于访问它的代码。但是因为我有三个嵌套的for循环,所以我认为这没有它的最快速度:
for main_key, main_value in dictionary.items():
if main_value:
for value in main_value:
for sub_keys, sub_values in value.items():
if sub_keys == "date":
print(sub_values)
关于如何使我的代码更简洁,更快捷的任何指示?提前非常感谢!
答案 0 :(得分:4)
几点:
main_key
变量未使用,因此您可以简单地遍历dictionary.values()
。if main_value:
语句是多余的,因为如果for
仍然为空,则以下main_value
循环将不会迭代。value.items()
上最里面的循环是不必要的,因为它所做的只是查找date
字典的value
键并打印其值,您只需使用方括号即可完成此操作通过value
键访问date
字典。在其周围放置一个try
块以忽略丢失的date
键,因为这是您当前代码的行为。考虑到以上几点,您的代码应类似于:
for main_value in dictionary.values():
for value in main_value:
try:
print(value['date'])
except KeyError:
pass
答案 1 :(得分:0)
您可以创建一个函数并返回值:
>>> def get_value(key1, key2=None):
... if key1 and key2:
... try:
... return my_dict.get(key1).get(key2)
... except Exception as e:
... print(e)
... return None
... else:
... return my_dict(key1)
我可以在您的代码中看到您只想访问date
键。您可以执行以下操作:
>>> for x in my_dict:
... print(my_dict[x].get('date'))
这是最快的操作。因为访问字典值的时间复杂度为o(1)。