创建一个由子数组和子列表项组成的字典
Create a dictionary consisting of items of subarrays and sublists
数据
import numpy as np
class_data=[np.array(['class3','class5']),np.array(['claas1','class9'])]
data=[['dog.txt','cat.txt'],['mouse.txt','horse.txt']]
需要的结果是创建一个如下所示的字典:
[[{'text': 'dog.txt', 'class': 'class3'},
{'text': 'cat.txt', 'class': 'class5'}],
[{'text': 'mouse.txt', 'class': 'class1'},
{'text': 'horse.txt', 'class': 'class9'}]]
我的尝试是:
out_data=[]
for kk,kb in zip(class_data,data):
for ii,kb2 in enumerate(kb):
for i,v in enumerate(kk):
out_data.append({'text': kb2, 'class': v})
out_data
它从每个相应的数组中进行了所有可能的组合,但这是错误的。
[{'text': 'dog.txt', 'class': 'class3'},
{'text': 'dog.txt', 'class': 'class5'},
{'text': 'cat.txt', 'class': 'class3'},
{'text': 'cat.txt', 'class': 'class5'},
{'text': 'mouse.txt', 'class': 'claas1'},
{'text': 'mouse.txt', 'class': 'class9'},
{'text': 'horse.txt', 'class': 'claas1'},
{'text': 'horse.txt', 'class': 'class9'}]
该解决方案应该迭代工作并且可以处理更大的数据集
如果您想相应地迭代 1 个(或多个)不同的数据结构,我建议使用 zip,将它们一起检索。像这样:
import numpy as np
class_data=[np.array(['class3','class5']),np.array(['class1','class9'])]
data=[['dog.txt','cat.txt'],['mouse.txt','horse.txt']]
out_data=[]
for c_d, d_d in zip(class_data,data):
for c_d_i, d_d_i in zip(c_d,d_d):
out_data.append({"text": d_d_i, "class":c_d_i})
print(out_data)
收到输出:
[{'text': 'dog.txt', 'class': 'class3'}, {'text': 'cat.txt', 'class': 'class5'}, {'text': 'mouse.txt', 'class': 'class1'}, {'text': 'horse.txt', 'class': 'class9'}]
这个怎么样:
out_data=[]
for pairs in zip(data, class_data):
temp_list = []
for x in zip(pairs[0], pairs[1]):
temp_list.append({'text': x[0], 'class': x[1]})
out_data.append(temp_list)
out_data
输出:
[[{'text': 'dog.txt', 'class': 'class3'},
{'text': 'cat.txt', 'class': 'class5'}],
[{'text': 'mouse.txt', 'class': 'claas1'},
{'text': 'horse.txt', 'class': 'class9'}]]
数据
import numpy as np
class_data=[np.array(['class3','class5']),np.array(['claas1','class9'])]
data=[['dog.txt','cat.txt'],['mouse.txt','horse.txt']]
需要的结果是创建一个如下所示的字典:
[[{'text': 'dog.txt', 'class': 'class3'},
{'text': 'cat.txt', 'class': 'class5'}],
[{'text': 'mouse.txt', 'class': 'class1'},
{'text': 'horse.txt', 'class': 'class9'}]]
我的尝试是:
out_data=[]
for kk,kb in zip(class_data,data):
for ii,kb2 in enumerate(kb):
for i,v in enumerate(kk):
out_data.append({'text': kb2, 'class': v})
out_data
它从每个相应的数组中进行了所有可能的组合,但这是错误的。
[{'text': 'dog.txt', 'class': 'class3'},
{'text': 'dog.txt', 'class': 'class5'},
{'text': 'cat.txt', 'class': 'class3'},
{'text': 'cat.txt', 'class': 'class5'},
{'text': 'mouse.txt', 'class': 'claas1'},
{'text': 'mouse.txt', 'class': 'class9'},
{'text': 'horse.txt', 'class': 'claas1'},
{'text': 'horse.txt', 'class': 'class9'}]
该解决方案应该迭代工作并且可以处理更大的数据集
如果您想相应地迭代 1 个(或多个)不同的数据结构,我建议使用 zip,将它们一起检索。像这样:
import numpy as np
class_data=[np.array(['class3','class5']),np.array(['class1','class9'])]
data=[['dog.txt','cat.txt'],['mouse.txt','horse.txt']]
out_data=[]
for c_d, d_d in zip(class_data,data):
for c_d_i, d_d_i in zip(c_d,d_d):
out_data.append({"text": d_d_i, "class":c_d_i})
print(out_data)
收到输出:
[{'text': 'dog.txt', 'class': 'class3'}, {'text': 'cat.txt', 'class': 'class5'}, {'text': 'mouse.txt', 'class': 'class1'}, {'text': 'horse.txt', 'class': 'class9'}]
这个怎么样:
out_data=[]
for pairs in zip(data, class_data):
temp_list = []
for x in zip(pairs[0], pairs[1]):
temp_list.append({'text': x[0], 'class': x[1]})
out_data.append(temp_list)
out_data
输出:
[[{'text': 'dog.txt', 'class': 'class3'},
{'text': 'cat.txt', 'class': 'class5'}],
[{'text': 'mouse.txt', 'class': 'claas1'},
{'text': 'horse.txt', 'class': 'class9'}]]