2017-06-08 14 views
-1

リストアイテムを実際の値に変更しようとしています。たとえば、これは私のデータが今どのように見えるかです:リスト内のアイテムを1つのインデックス内の複数の「キー」に置き換える

data = [ 
['student1', '"answer 1"', '"answer 2"', '"answer 3"'], 
['student2', '"answer 10"', '"answer 2"', '"answer 3", "answer 4"'] 

データの最後の項目で見られるように、[1]、単数質問に対する複数の応答が存在することができます。今すぐ私のコードはこれです:

def answer_replace(data): 
    replaced_data = [] 
    for element in data: 
     replaced_element = [] 
     for index, item in enumerate(element): 
      print (index) 
      print (item) 
      if index in answer_replacement: 
       replaced_element.append(answer_replacement[index].get(item, item)) 
      else: # no replacement available for this index 
       replaced_element.append(item) 
      print (replaced_element) 
     replaced_data.append(replaced_element) 
    return replaced_data 

複数の回答がある場合を除いては問題ありません。私はre.subを使用しようとしていましたが、動作させることができませんでした。 (値を変更したい回答は辞書answer_replacementに保存されています)

+0

「答え」3、「答え4」はどういうことでしょうか?それは "1"、 "replacement 2" ''に置き換えられますか?そして、どのインデックスが彼らの置換えを調べるために使われるだろうか?彼らは両方ともインデックス3を共有するだろうか? –

+0

@Rawingはい、それは置換 "1"、置換2 "'でなければなりませんが、2番目の質問はこの問題の混乱の一部です。 – fcb434

答えて

0

私は、あなたが学生の回答から「回答」を削除したいと思います。あなたはこれを試すことができます。

data = [ ['student1', "answer 1", "answer 2", "answer 3"], ['student2', "answer 10", "answer 2", "answer 3", "answer 4"]] 

student_data = {i[0]:[b.replace("answer", "replacement") for b in i[1:]] for i in data} 

出力:

{'student2': ['replacement 10', 'replacement 2', 'replacement 3', 'replacement 4'], 'student1': ['replacement 1', 'replacement 2', 'replacement 3']} 
0

はこれを投稿した後、数分でそれを考え出すことになりました。 Go figure。ここで私は何をしたのですか:

def answer_replace(data): 
    replaced_data = [] 
    for element in data: 
     replaced_element = [] 
     for index, item in enumerate(element): 
      if index == 5 or index == 7 or index == 8 or index == 10 or index == 12 or index == 15: 
       newitem = item.split(',') 
       temp = [] 
       for item in newitem: 
        item = item.strip() 
        temp.append(re.sub(item, answer_replacement[index][item], item)) 
       replaced_element.append(temp) 
      elif index in answer_replacement: 
       replaced_element.append(answer_replacement[index].get(item, item)) 
      else: # no replacement available for this index 
       replaced_element.append(item) 
     replaced_data.append(replaced_element) 
    return replaced_data 
関連する問題