动态创建一个列表,并将所有与当前值匹配的值存储在 python 3.x
Create a list dynamically and store all the values matching with current value in python 3.x
我有一个文本文件,其中包含像
这样动态创建的数据
1000L 00V
2000L -10V
3500L -15V
1250L -05V
1000L -05V
2000L -05V
6000L -10V
1010L 00V
等等...
V 之前的数字可能不同于 -160 to +160
我想动态创建一个列表(不使用字典)并根据V
之前的匹配数字将值存储在列表中
在这种情况下,我想创建如下列表集
00 = ["1000", "1010"]
-10 = ["2000", "6000"]
-15 = ["3500"]
-05 = ["1250", "1000", "2000"]
尝试过的代码:
if name.split()[1] != "":
gain_value = name.split()[1]
gain_value = int(gain_value.replace("V", ""))
if gain_value not in gain_list:
gain_list.append(gain_value)
gain_length = len(gain_list)
print(gain_length)
g['gain_{0}'.format(gain_length)] = []
'gain_{0}'.format(gain_length).append(L_value)
else:
index_value = gain_list.index(gain_value)
g[index_value].append(L_value)
for x in range(0, len(gain_list)):
print(str(gain_list[x]) + "=" + 'gain_{0}'.format(x))
但是上面的代码不起作用,因为我在附加 'gain_{0}'.format(gain_length).append(L_value)
时遇到错误,而且我不确定如何在创建列表后动态打印列表,如我所需的输出中所述。
我不能为上述方法使用字典,因为我想动态地给出列表作为 pygal 模块 的输入,如下所示:
因为我需要 pygal 模块的输出作为输入,例如:
for x in range(0, gain_length):
bar_chart.x_labels = k_list
bar_chart.add(str(gain_length[x]),'gain_{0}'.format(x))
这里我只能从列表而不是字典中添加值
你可以使用 collections.defaultdict
:
import collections
my_dict = collection.defaultdict(list)
with open('your_file') as f:
for x in f:
x = x.strip().split()
my_dict[x[1][:-1]].append(x[0])
输出:
defaultdict(<type 'list'>, { '00': ["1000", "1010"],
'-10':["2000", "6000"],
'-15': ["3500"],
'-05': ["1250", "1000", "2000"]})
对于您想要的输出:
for x,y in my_dict.items():
print "{} = {}".format(x,y)
我有一个文本文件,其中包含像
这样动态创建的数据1000L 00V
2000L -10V
3500L -15V
1250L -05V
1000L -05V
2000L -05V
6000L -10V
1010L 00V
等等...
V 之前的数字可能不同于 -160 to +160
我想动态创建一个列表(不使用字典)并根据V
在这种情况下,我想创建如下列表集
00 = ["1000", "1010"]
-10 = ["2000", "6000"]
-15 = ["3500"]
-05 = ["1250", "1000", "2000"]
尝试过的代码:
if name.split()[1] != "":
gain_value = name.split()[1]
gain_value = int(gain_value.replace("V", ""))
if gain_value not in gain_list:
gain_list.append(gain_value)
gain_length = len(gain_list)
print(gain_length)
g['gain_{0}'.format(gain_length)] = []
'gain_{0}'.format(gain_length).append(L_value)
else:
index_value = gain_list.index(gain_value)
g[index_value].append(L_value)
for x in range(0, len(gain_list)):
print(str(gain_list[x]) + "=" + 'gain_{0}'.format(x))
但是上面的代码不起作用,因为我在附加 'gain_{0}'.format(gain_length).append(L_value)
时遇到错误,而且我不确定如何在创建列表后动态打印列表,如我所需的输出中所述。
我不能为上述方法使用字典,因为我想动态地给出列表作为 pygal 模块 的输入,如下所示:
因为我需要 pygal 模块的输出作为输入,例如:
for x in range(0, gain_length):
bar_chart.x_labels = k_list
bar_chart.add(str(gain_length[x]),'gain_{0}'.format(x))
这里我只能从列表而不是字典中添加值
你可以使用 collections.defaultdict
:
import collections
my_dict = collection.defaultdict(list)
with open('your_file') as f:
for x in f:
x = x.strip().split()
my_dict[x[1][:-1]].append(x[0])
输出:
defaultdict(<type 'list'>, { '00': ["1000", "1010"],
'-10':["2000", "6000"],
'-15': ["3500"],
'-05': ["1250", "1000", "2000"]})
对于您想要的输出:
for x,y in my_dict.items():
print "{} = {}".format(x,y)