从多个不同大小的列表中提取两个列表?
Extracting two lists from multiple lists with different size?
考虑以下 4 个列表:
x_name=[’02-2014’,’03-2014’,’05-2014’,’01-2016’,’03-2016’]
x_value=[5,7,10,5,8]
z_name=[’02-2014’,’03-2014’,’04-2014’,’05-2014’,’07-2014’,’01-
2016’,’02-2016’,’03-2016’]
z_value=[16,18,33,12,78,123,3,5]
从这 4 个列表中,我想要两个列表,例如 lst_name 和 lst_value。 lst_name里面应该和z_name一样,但是对于lst_value,如果他们在(x_name
和z_name
里面有相同的名字,我们应该计算它们对应值的比率(在 x_value
和 z_value
中)例如 5/16,以及 z_name
中不在 x_name
中的名称(例如 '04 -2014'、'02-2016' 等) 应分配给 lst_value 列表中的 0。所以所需的列表应该是:
lst_name=[’02-2014’,’03-2014’,’04-2014’,’07-2014’,’05-
2014’,’01-2016’,’02-2016’,’03-2016’]
Lst_value=[0.31,0.38,0,0.83,0,0.06,0,1.6]
有什么有效的方法来处理它吗?
代码
from __future__ import print_function
x_name = ['02-2014', '03-2014', '05-2014', '01-2016', '03-2016']
x_value = [5, 7, 10, 5, 8]
z_name = ['02-2014', '03-2014', '04-2014', '05-2014',
'07-2014', '01-2016', '02-2016', '03-2016']
z_value = [16, 18, 33, 12, 78, 123, 3, 5]
Lst_value = []
if len(z_name) > len(x_name):
lst_name = z_name
other = x_name
else:
lst_name = x_name
other = z_name
for n, elem in enumerate(lst_name):
if elem in other:
m = other.index(elem)
Lst_value.append(float(x_value[m])/z_value[n])
else:
Lst_value.append(0.0)
print(Lst_value)
输出
lst_name = ['02-2014', '03-2014', '04-2014', '05-2014', '07-2014', '01-2016', '02-2016', '03-2016']
Lst_value = [0.3125, 0.3888888888888889, 0.0, 0.8333333333333334, 0.0, 0.04065040650406504, 0.0, 1.6]
考虑以下 4 个列表:
x_name=[’02-2014’,’03-2014’,’05-2014’,’01-2016’,’03-2016’]
x_value=[5,7,10,5,8]
z_name=[’02-2014’,’03-2014’,’04-2014’,’05-2014’,’07-2014’,’01-
2016’,’02-2016’,’03-2016’]
z_value=[16,18,33,12,78,123,3,5]
从这 4 个列表中,我想要两个列表,例如 lst_name 和 lst_value。 lst_name里面应该和z_name一样,但是对于lst_value,如果他们在(x_name
和z_name
里面有相同的名字,我们应该计算它们对应值的比率(在 x_value
和 z_value
中)例如 5/16,以及 z_name
中不在 x_name
中的名称(例如 '04 -2014'、'02-2016' 等) 应分配给 lst_value 列表中的 0。所以所需的列表应该是:
lst_name=[’02-2014’,’03-2014’,’04-2014’,’07-2014’,’05-
2014’,’01-2016’,’02-2016’,’03-2016’]
Lst_value=[0.31,0.38,0,0.83,0,0.06,0,1.6]
有什么有效的方法来处理它吗?
代码
from __future__ import print_function
x_name = ['02-2014', '03-2014', '05-2014', '01-2016', '03-2016']
x_value = [5, 7, 10, 5, 8]
z_name = ['02-2014', '03-2014', '04-2014', '05-2014',
'07-2014', '01-2016', '02-2016', '03-2016']
z_value = [16, 18, 33, 12, 78, 123, 3, 5]
Lst_value = []
if len(z_name) > len(x_name):
lst_name = z_name
other = x_name
else:
lst_name = x_name
other = z_name
for n, elem in enumerate(lst_name):
if elem in other:
m = other.index(elem)
Lst_value.append(float(x_value[m])/z_value[n])
else:
Lst_value.append(0.0)
print(Lst_value)
输出
lst_name = ['02-2014', '03-2014', '04-2014', '05-2014', '07-2014', '01-2016', '02-2016', '03-2016']
Lst_value = [0.3125, 0.3888888888888889, 0.0, 0.8333333333333334, 0.0, 0.04065040650406504, 0.0, 1.6]