Python附加到多个列表中的标签

时间:2012-11-01 05:35:43

标签: python

所以我有几个列表是数据文件中变量的标题。设置如下:

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"]

我想做三件事:

  • 按顺序创建一个包含masterVars中所有项目的列表。我不知道价值观是否独特。
  • 如果headerGroupX中包含的列表项位于masterVars中,请将该标题组添加到列表项中。
  • 将包含所有64k项目的列表转储到我可以在SPSS中管理的内容(有点开玩笑)(

如果只有2个列表,我认为这很简单。我认为我遇到的一个大问题是在将数据添加到列表项之后会发生什么。但我不完全确定我搞砸了什么。

编辑:

以下是我想要输出的示例:

newMasterFile = ["headerGroup1, headerGroup3, 1", "headerGroup1, headerGroup3, 2", etc.]

这会让事情更清楚吗?

2 个答案:

答案 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)