所以我有几个列表是数据文件中变量的标题。设置如下:
headerGroup1 = ["1", "2", "3, "4", "5"] headerGroup2 = ["6", "7", "8, "9", "10"] headerGroup3 = ["1", "2", "3", "4", "5"]
我有一个如下所示的主文件:
masterVars = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
我想做三件事:
如果只有2个列表,我认为这很简单。我认为我遇到的一个大问题是在将数据添加到列表项之后会发生什么。但我不完全确定我搞砸了什么。
编辑:
以下是我想要输出的示例:
newMasterFile = ["headerGroup1, headerGroup3, 1", "headerGroup1, headerGroup3, 2", etc.]
这会让事情更清楚吗?
答案 0 :(得分:1)
import functools # python3 compatibility (for reduce function)
# unsorted - see 3,4 are swaped!
masterVars = ["1", "2", "4", "3", "5", "6", "7", "8", "9", "10"]
input_dict=dict(headerGroup1 = ["1", "2", "3", "4", "5"],headerGroup2 = ["6", "7", "8", "9", "10"],headerGroup3 = ["1", "2", "3", "4", "5"])
# used builtins sorted function for sorting
new_master_file=[' '.join(j[0])+' '+j[1] for j in [functools.reduce(lambda a,b:(i in input_dict[b] and a[0]+[b] or a[0],i),input_dict,[[],i]) for i in sorted(masterVars,key=int)]]
for i in new_master_file:
print (i)
或者您喜欢更易阅读的版本? ;)
PS。什么是SPSS?
答案 1 :(得分:0)
按顺序创建一个包含masterVars中所有项目的列表。 我不知道价值观是否独特。
它已经“排序”了(引用因为你从不解释你想要的顺序),但假设它不是:
>>> shuffle(masterVars)
>>> masterVars ['2', '9', '5', '7', '4', '1', '10', '6', '8', '3']
>>> sort(masterVars, key=lambda x: int(x))
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
如果您不知道这些值是否唯一,并且您希望它们是唯一的,请将其转换为set
。
如果headerGroupX中包含的列表项在masterVars中,则前置 该标题组到列表项。
new_list = []
for i in headerGroupX:
if i in masterVars:
new_list.append(','.join(headerGroupX)+','+i)
else:
new_list.append(i)