遍历字典列表
Iterate over a list of dict
有这样一个字典列表:
dic = {'image' : np.array, 'image_name' : 'str'}
my_list = [dic_0, dic_1, dic_2, ..., dic_n]
然后我想获取这个字典列表中的所有图像来创建另一个图像列表,它将是:
image_list = [np.array, np.array, np.array, ...]
据我能想到的是:
image_list = []
for dic in dic_list:
image = dic['image']
image_list.append(image)
return image_list
有更好的方法吗?
更好的是在事物上可能有点主观。这可以使用列表理解来完成,这是一个 python 功能,可用于缩短这样的循环
image_list = [dic['image'] for dic in dic_list]
只要列表中的所有项目都有图像键,这应该可以工作
是的,你试试这个:
def check(x):
image_list = []
for i in x:
image = x[i]
image_list.append(image)
return image_list
req=check(dic)
然后调用校验函数即可。
我会推荐使用 panda 的 json.normalize 在一个漂亮的衬垫中。您可以使用词典或词典列表(我相信这是您的情况)。此函数 returns 一个 pandas 数据框,您可以从中轻松 select 包含图像的列,如下所示:
import numpy as np
import pandas as pd
# your dictionnaries
dic_0 = {'image' : np.array([1,2,3]), 'image_name' : 'img_1'}
dic_1 = {'image' : np.array([6,8,10]), 'image_name' : 'img_2'}
dic_2 = {'image' : np.array([10,20,30]), 'image_name' : 'img_3'}
# your list of dictionnaries
my_list = [dic_0, dic_1, dic_2]
# all of your images stored in a list
all_imgs = pd.json_normalize(my_list)['image'].tolist()
print(all_imgs)
>>> [array([1, 2, 3]), array([ 6, 8, 10]), array([10, 20, 30])]+
有这样一个字典列表:
dic = {'image' : np.array, 'image_name' : 'str'}
my_list = [dic_0, dic_1, dic_2, ..., dic_n]
然后我想获取这个字典列表中的所有图像来创建另一个图像列表,它将是:
image_list = [np.array, np.array, np.array, ...]
据我能想到的是:
image_list = []
for dic in dic_list:
image = dic['image']
image_list.append(image)
return image_list
有更好的方法吗?
更好的是在事物上可能有点主观。这可以使用列表理解来完成,这是一个 python 功能,可用于缩短这样的循环
image_list = [dic['image'] for dic in dic_list]
只要列表中的所有项目都有图像键,这应该可以工作
是的,你试试这个:
def check(x):
image_list = []
for i in x:
image = x[i]
image_list.append(image)
return image_list
req=check(dic)
然后调用校验函数即可。
我会推荐使用 panda 的 json.normalize 在一个漂亮的衬垫中。您可以使用词典或词典列表(我相信这是您的情况)。此函数 returns 一个 pandas 数据框,您可以从中轻松 select 包含图像的列,如下所示:
import numpy as np
import pandas as pd
# your dictionnaries
dic_0 = {'image' : np.array([1,2,3]), 'image_name' : 'img_1'}
dic_1 = {'image' : np.array([6,8,10]), 'image_name' : 'img_2'}
dic_2 = {'image' : np.array([10,20,30]), 'image_name' : 'img_3'}
# your list of dictionnaries
my_list = [dic_0, dic_1, dic_2]
# all of your images stored in a list
all_imgs = pd.json_normalize(my_list)['image'].tolist()
print(all_imgs)
>>> [array([1, 2, 3]), array([ 6, 8, 10]), array([10, 20, 30])]+