如何使用两个相同的键和不同的值从Python中的三个不同列表创建字典?

如何使用两个相同的键和不同的值从Python中的三个不同列表创建字典?,python,list,dictionary,Python,List,Dictionary,我有三份清单: 包含密钥的列表为: keys = ['testname', 'output'] 包含值的列表包括: value1 = ['pizza', 'dog', 'lion'] value2 = ['12.3', '356', '45.6'] 我期望的输出是: { "Labresult":[ { 'testname': 'pizza', 'output': '12.3', }, { 'testname': 'dog'

我有三份清单:

包含密钥的列表为:

keys = ['testname', 'output']
包含值的列表包括:

value1 = ['pizza', 'dog', 'lion']
value2 = ['12.3', '356', '45.6']
我期望的输出是:

{
 "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
是数据帧的列。但是,对于大量数据,问题的限制因素始终是您需要生成嵌套dict。将最初建议的方法与大量数据的潜在方法(无循环)进行比较,结果表明前者速度更快:

将numpy导入为np
作为pd进口熊猫
keys=['testname','output']
value1=列表(np.random.choice(['pizza'、'dog'、'lion'],100_000))
值2=列表(映射(str,np.round(np.random.random(100×000)*1000,1)))
%timeit{“Labresult”:[dict(zip(key,pair))用于zip(value1,value2)]中的pair
#每个回路56 ms±1.8 ms(7次运行的平均值±标准偏差,每个10个回路)
df=pd.DataFrame({“testname”:value1,“output”:value2})
%timeit{“Labresult”:df.apply(dict,axis=1.tolist()}
#每个回路1.1 s±50.1 ms(7次运行的平均值±标准偏差,每个回路1次)

如果您可以选择更改所需结果的形状/数据类型(例如,没有嵌套的dict),则可以进行改进。

工作非常出色,我对如何迭代键列表中的项感到困惑。谢谢比如说,你不希望你的方法包含“for”,那么我们如何推进这一点呢?@JimitVaghela我在回答中补充了一些想法。干杯