![](/img/trans.png)
[英]How to create a new dictionary from an old dictionary with the same keys but different values using a for loop
[英]How to create dictionary from three different list in Python using two same Keys and different values?
我有三个列表:
包含键的列表是:
keys = ['testname', 'output']
包含值的列表是:
value1 = ['pizza', 'dog', 'lion']
value2 = ['12.3', '356', '45.6']
我想要的 output 是:
{
"Labresult":[
{ 'testname': 'pizza',
'output': '12.3',
},
{ 'testname': 'dog',
'output': '356,'
},
{ 'testname': 'lion',
'output': '45.6',
}]
}
我尝试了什么:
dict(zip(key, zip(value1,value2)))
好的开始,但您仍然需要对这些值进行循环:
{"Labresult": [dict(zip(keys, pair))
for pair in zip(value1, value2)]}
::
原则上,您也可以切换到基于 Pandas 的方法,例如,如果value1
和value2
是 DataFrame 的列。 但是,对于大量数据,问题的限制因素始终是您需要生成嵌套字典这一事实。 将最初建议的方法与潜在的 pandas 方法进行比较,以处理大量数据(无 for 循环),事实证明前者要快得多:
import numpy as np
import pandas as pd
keys = ['testname', 'output']
value1 = list(np.random.choice(['pizza', 'dog', 'lion'], 100_000))
value2 = list(map(str, np.round(np.random.random(100_000) * 1000, 1)))
%timeit {"Labresult": [dict(zip(keys, pair)) for pair in zip(value1, value2)]}
# 56 ms ± 1.8 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
df = pd.DataFrame({"testname": value1, "output": value2})
%timeit {"Labresult": df.apply(dict, axis=1).tolist()}
# 1.1 s ± 50.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
如果您可以选择更改所需结果的形状/数据类型(例如,没有嵌套字典),则可以进行改进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.