处理嵌套字典的最快方法
Fastest way to handle nested dictionaries
我是 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)
关于如何使我的代码更简洁、更快速的任何指示?非常感谢!
几点:
- 主循环中的
main_key
变量未使用,因此您可以简单地迭代 dictionary.values()
。
if main_value:
语句是多余的,因为如果 main_value
无论如何都是空的,下面的 for
循环将不会迭代。
- 最内层的
value.items()
循环是不必要的,因为它所做的只是找到 value
字典的 date
键并打印它的值,你可以通过简单地使用方括号通过 date
键访问 value
字典。在它周围放置一个 try
块以忽略丢失的 date
键,因为这就是您当前代码的行为方式。
考虑到以上几点,您的代码应该如下所示:
for main_value in dictionary.values():
for value in main_value:
try:
print(value['date'])
except KeyError:
pass
您可以创建一个函数和 return 值:
>>> 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).
我是 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)
关于如何使我的代码更简洁、更快速的任何指示?非常感谢!
几点:
- 主循环中的
main_key
变量未使用,因此您可以简单地迭代dictionary.values()
。 if main_value:
语句是多余的,因为如果main_value
无论如何都是空的,下面的for
循环将不会迭代。- 最内层的
value.items()
循环是不必要的,因为它所做的只是找到value
字典的date
键并打印它的值,你可以通过简单地使用方括号通过date
键访问value
字典。在它周围放置一个try
块以忽略丢失的date
键,因为这就是您当前代码的行为方式。
考虑到以上几点,您的代码应该如下所示:
for main_value in dictionary.values():
for value in main_value:
try:
print(value['date'])
except KeyError:
pass
您可以创建一个函数和 return 值:
>>> 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).