我有以下清单:
x = ['0001', 'Random message XYX', 'Random second message IAI', '0002', 'Random message IAM', 'Random second message OMA', 'Random third message OMA', '0003', 'Random message XAK', 'Random second message YAB', '0004', ' Random message INA']
我还有另外一张单子
y = ['0001', '0002', '0003', '0004']
我想根据组y对列表x进行分组,以便输出:
x = [['0001', 'Random message XYX', 'Random second message IAI'], ['0002', 'Random message IAM', 'Random second message OMA', 'Random third message OMA'], ['0003', 'Random message XAK', 'Random second message YAB'], ['0004', ' Random message INA']]
我试过:
x = ['0001', 'Random message XYX', 'Random second message IAI', '0002', 'Random message IAM', 'Random second message OMA', 'Random third message OMA', '0003', 'Random message XAK', 'Random second message YAB', '0004', ' Random message INA']
y = ['0001', '0002','0003', '0004']
grouped_list = []
for entry in x:
if entry in y:
new_list = []
new_list.append(entry)
for i in range(x.index(entry)+1, len(x)):
if(x[i][0] not in y):
new_list.append(x[i])
else:
break
grouped_list.append(list(new_list))
print (grouped_list)
但是,这只是打印[]
有人能告诉我需要做些什么来打印我想要的输出吗?你知道吗
我用y.luis的答案做了一些修改,这个答案在这个例子中是有效的,但是我在使用实际数据时发现了一个问题。我在两个列表中都有重复的条目,这导致它覆盖x列表中的数据,而不仅仅是对其进行分组。如果运行此代码,将覆盖x列表的最后一部分:
x = ['0001', 'Random message XYX', 'Random second message IAI', '0002', 'Random message IAM', 'Random second message OMA', 'Random third message OMA', '0003', 'Random message XAK', 'Random second message YAB', '0004', ' Random message INA', '0001', 'Random message ryryry', 'Random second message ryyryyryryry']
y = ['0001', '0002','0003', '0004', '0001', '0002']
grouped_list = []
for entry in x:
if entry in y:
new_list = []
new_list.append(entry)
for i in range(x.index(entry)+1, len(x)):
if(x[i] not in y):
new_list.append(x[i])
else:
break
grouped_list.append(list(new_list))
print (grouped_list)
有人能告诉我怎么避免吗?你知道吗
两轮怎么样?(抱歉,不能在一行中完成)
给了我
您最内在的
if
中有一个错误:在这里,您要检查项目的第一个字符是否在列表中。应该是:
如果要避免组键重复,可以使用字典:
相关问题 更多 >
编程相关推荐