我有两个包含字典的列表,如下所示:
listone = [{'unit1': {'test1': 10}},
{'unit1': {'test2': 45'},
{'unit2': {'test1': 78'},
{'unit2': {'test2': 2'}}]
listtwo = [{'unit1': {'test1': 56}},
{'unit1': {'test2': 34'},
{'unit2': {'test1': 23'},
{'unit2': {'test2': 5'}}]
我还将所有单元名称和测试名称分别列在单独的列表中:
^{pr2}$如何找到每个测试值的增量,即(test2
-test1
)的值,以便我最终可以按如下方式排列数据:
unit1, test1, delta
unit1, test2, delta
unit2, test1, delta
unit2, test2, delta
到目前为止,我有这些:
def delta(array1, array2):
temp = []
temp2 = []
tmp = []
tmp2 = []
delta = []
for unit in units:
for mkey in array1:
for skey in mkey:
if skey == unit:
temp.append(mkey[skey])
floater(temp) #floats all the values
for i in testnames:
for u in temp:
tmp.append(u[i])
tmp = filter(None, tmp2)
for mkey in array2:
for skey in mkey:
if skey == unit:
temp.append(mkey[skey])
floater(temp2)
for i in testnames:
for u in temp2:
tmp2.append(u[i])
tmp2 = filter(None, tmp2)
delta = [tmp2 - tmp for tmp2, tmp in zip(tmp2, tmp)]
print delta
delta(listone,listtwo)
不幸的是,代码给出了Keyerror
。:(
请帮帮我。谢谢。在
或许可以将数据转换为另一种更方便的数据结构。 例如,与
listone
不同,使用这样的单个dict会更容易:既然如此
^{pr2}$这里我们将}转换为dict列表:
listone
和{现在找到
deltas
很容易:收益率
我认为用字典比较容易。在这里,我按步骤定义它们,因为我假设您收集的是某个测试过程的结果,但您也可以在一行中完成。在
这就产生了
^{pr2}$类似,但更具封装性:
编辑:要查找字段平均值:
^{pr2}$相关问题 更多 >
编程相关推荐