Python:将两个部分匹配的列表中的元素插入字典

时间:2019-03-26 05:50:55

标签: python python-3.x loops dictionary if-statement

我有两个清单;我们称它们为list1list2。 在list1中,有一个答案如下的问题:

   Question1,Answer,Answer, Question2, Answer, Answer, Answer, Question3, Answer (and so one) 

list2中,有一个来自list1的问题(无答案)

我在名称为list2的字典中插入了slice作为参数,并排列了np.zeros作为值。所以我在slice中有这样的东西:

  Q1 ...... 0
  Q2 ...... 0
  Q3 ...... 0

我想将list1中的数据(毫无疑问)插入到slice中,值现在为零。所以我想要这样的东西:

  Q1 ...... A,A
  Q2 ...... A,A,A
  Q3 ...... A
  ...

我尝试了下一个代码,但是没有用... next()仅插入了下一个索引字母:像“ o”左右...

zero = np.zeros(len(list2))
slice = dict(zip(list2, zero))
for c in list1:
    for m in slice:
        if c == m:
            c = iter(c)
            slice.update({m:next(c)})
print(slice)

有一个问题,我不知道答案的索引,并且答案的数量是随机的。就像一个问题的答案,但是三个问题的答案,等等,一个……我唯一能做的就是,我的问题在另一个列表中没有答案

请帮助。...

在这里,这是列表2中的一个问题示例:

['お疲れ様です。コールセンターからメディア顧客外へ転用のテレアポをしているのですが、フレッツ光ライトと防犯カメラの関係はどうなっているかご存じでしょうか?] 
#Here is same question + answers from list1:question 
[コールセンターからメディア顧客外へ転用のテレアポをしているのですが、フレッツ光ライトと防犯カメラの関係はどうなっているかご存じでしょうか?]', '
#answer1
[防犯カメラを導入する為にライトを引かれたと聞きました。]', '
#answer2
[外部からのアクセスでは?'] 
#question2 
['お疲れ様です。F-Secureからのメールが送信される頻度はどのくらいなのでしょうか?]
#answer .... 
#I expecting same result in dict (Q1: A,A /Q2: A). But I get this:question 
[コールセンターからメディア顧客外へ転用のテレアポをしているのですが、あるお客さんより防犯カメラを設置した時に、フレッツ光ライトと防犯カメラの関係はどうなっているかご存じでしょうか?]', '
#answer1
[防] 
#(only one symbol) 

1 个答案:

答案 0 :(得分:0)

这里是编码此问题的另一种方法。我无法读取您的示例数据,但我假设list1list2实际上是可以使用索引值定位每个项目的列表(例如,list2中的第一个项目可以与list2[0]一起找到)。

此答案还假设没有重复的问题,否则index()函数将始终返回这些问题的首次出现。

#define dictionary to hold question-answer combinations
final_dict = {} #what you have named 'slice' in your code
#loop through questions in list2, find location of question in list1,
#then, extract all answers from list1 found between given question and next question,
#store them in a list and add question and its corresponding answers to the final dictionary
for idx2, question in enumerate(list2):
   if question in list1:
      Try:
         next_question = list2[idx2+1]
         start_idx1 = list1.index(question) + 1
         answers = []
         for idx1 in range(start_idx1,list1.index(next_question)):
            answers.append(list1[idx1])
         final_dict[question] = answers
      Except IndexError:
         pass
print(final_dict)