如何将多个 numpy 数组组合成字典列表

And*_* Ng 5 python dictionary numpy

我有以下数组:

column_names = ['id', 'temperature', 'price']
Run Code Online (Sandbox Code Playgroud)

三个numpy数组如下:

idArry = ([1,2,3,4,....])

tempArry = ([20.3,30.4,50.4,.....])

priceArry = ([1.2,3.5,2.3,.....])
Run Code Online (Sandbox Code Playgroud)

我想将以上内容合并成字典,如下所示:

table_dict = ( {'id':1, 'temperature':20.3, 'price':1.2 },
               {'id':2, 'temperature':30.4, 'price':3.5},...)
Run Code Online (Sandbox Code Playgroud)

我可以使用for循环来append创建字典,但列表很大,大约有 15000 行。有人可以告诉我如何使用 pythonzip功能或其他更有效和快速的方法来实现上述要求吗?

Myk*_*tko 3

您可以使用 listcomp 和函数zip()

\n\n
[{'id': i, 'temperature': j, 'price': k} for i, j, k in zip(idArry, tempArry, priceArry)]\n# [{'id': 1, 'temperature': 20.3, 'price': 1.2}, {'id': 2, 'temperature': 30.4, 'price': 3.5}]\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您的 id 是 1、2、3...并且您使用列表,则您的字典中不需要 id。这是列表中的冗余信息。

\n\n
[{'temperature': i, 'price': j} for i, j in zip(tempArry, priceArry)]\n
Run Code Online (Sandbox Code Playgroud)\n\n

您还可以使用字典的字典。字典中的查找必须比列表中的查找快。

\n\n
{i: {'temperature': j, 'price': k} for i, j, k in zip(idArry, tempArry, priceArry)}\n# {1: {'temperature': 20.3, 'price': 1.2}, 2: {'temperature': 30.4, 'price': 3.5}}\n
Run Code Online (Sandbox Code Playgroud)\n