python - 如何从python中的两个ndarray列表创建键值对列表?
问题描述
我正在尝试从我的数据中的 2 ndarray 制作键值对。为此,我尝试遍历每个 ndarray 列表尝试将它们放在一起,但这对我来说不太有效。任何人都可以建议这样做的可能方式吗?任何想法?
数据和我的尝试
这是我需要从中制作字典的第一个 ndarray 列表:
['267']
['354' '783']
['21488']
['6063A']
['86R']
['969']
['332']
['630']
['788']
['8']
['27']
['278']
['262' '86K']
这是 ndarray 的第二个列表:
['JBS']
['Cargill' 'Harris Ranch']
['One World']
['Central Valley']
['Cargill']
['JBS']
['FPL']
['CS Beef']
['Aurora Pack']
['National Beef']
['Creekstone']
['Tyson']
['National Beef' 'Cargill']
我的尝试:
这是我的尝试:
import numpy as np
for (i,j), value in np.ndenumerate(first_ndarray):
for(m,n), value_2 in np.ndenumerate(first_ndarray):
dict= to_dict(value, value_2)
但这对我不起作用,看起来迭代 ndarray 的方式可能是正确的,但不会发生从中生成键值对的情况。谁能指出我如何做到这一点?有什么想法吗?
期望的输出
这是我想要的输出:
['JBS': '267']
['Cargill': '354' , 'Harris Ranch': '783']
['One World': 21488']
['Central Valley':'6063A']
['Cargill':'86R']
['JBS':'969']
['FPL':'332']
['CS Beef':'630']
['Aurora Pack':'788']
['National Beef':'8']
['Creekstone':'27']
['Tyson':'278']
['National Beef':'262', 'Cargill':'86K']
我怎样才能得到我想要的输出?任何想法?谢谢!
解决方案
您首先必须展平列表,然后您可以使用zip()
创建元组列表 (k, v),然后将它们转换为字典。
a = [
['A'],
['B'],
['C','D']
]
b = [
[1],
[2],
[3,4]
]
flatten = lambda l: [item for sublist in l for item in sublist]
d = dict(zip(flatten(a), flatten(b)))
print(d)
{'A': 1, 'B': 2, 'C': 3, 'D': 4}
请注意,如果a
和b
是 numpy 数组,则可以直接使用flatten 方法/函数。它可能会比 lambda 函数快得多。
推荐阅读
- ios - 在 raywenderlich 的核心数据教程中,应用程序因此崩溃:无法将类型“Bow_Ties.Bow_TiesBowtie”的值转换为“Bow_Ties.Bowtie”
- c - 微芯片 PIC 12F617;使用 TMR2 计算延迟
- c# - 在c#中,如何将用户控件链接到表单?
- java - 在 Android 应用程序中找不到 NullPointerException 的原因
- python - 错误:astype() 有一个意外的关键字参数“类别”
- web-services - 如何将文件从 xamarin 移动应用程序上传到 Web 服务?
- javascript - 回到顶部元素在触摸操作系统上保持悬停状态
- javascript - 按回车时,文本输入值消失(纯js)
- microsoft-graph-api - 用于获取分配给 Azure AD 中特定自定义角色的用户列表的 api
- azure-devops - 用于 gupta 团队开发人员应用程序的 CI/CD 管道?