-2

したがって、データ ファイル内の変数のヘッダーであるリストがいくつかあります。セットアップは次のようになります。

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

やりたいことは次の3つです。

  • masterVars のすべての項目を順番に含むリストを作成します。そして、値が一意かどうかはわかりません。
  • headerGroupX に含まれるリスト項目が masterVars にある場合、そのヘッダー グループをリスト項目の前に追加します。
  • 64,000 個のアイテムすべてを含むリストを、SPSS で管理できるものにダンプします (これについては冗談です)。

リストが2つしかない場合、これは簡単だと思います。私が直面していると思う大きな問題は、リスト項目にデータを追加した後に何が起こるかということです。しかし、私は何を台無しにしているのか完全にはわかりません。

編集:

出力したいものの例を次に示します。

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

これは何かを明確にしますか?

4

2 に答える 2

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とは?

于 2012-11-01T09:18:19.947 に答える
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)
于 2012-11-01T07:44:50.500 に答える