比较并存储两个单词列表中匹配的字母?

0 投票
1 回答
1976 浏览
提问于 2025-04-17 19:21

我刚开始学习编程,在Stackoverflow上看了很多关于如何在两个列表中匹配字符串的问答,但没有找到能解决我这个具体问题的。

我有两个列表,像这样:

list1 = ["INTP", "ESFJ", "ENTJ"]
list2 = ["ENTP", "ESFP", "ISTJ"]

我想逐个字母地遍历每个单词,并记录所有的比较结果,包括所有单词中匹配的字母总数,以及每对匹配的字母,像这样:

total_letters_compared = 12
total_correct_matches = 8 
first_letter_pair_matches = 1
second_letter_pair_matches = 2
third_letter_pair_matches = 3
fourth_letter_pair_matches = 2

我不知道怎么在两个列表的某个特定位置[i]进行比较,这样我才能把匹配的结果存储到我的变量里。到目前为止,我能想到的代码是这样的:

total = 0
total_letters_compared = 0
total_correct_matches = 0
first_letter_pair_matches = 0
second_letter_pair_matches = 0
third_letter_pair_matches = 0
fourth_letter_pair_matches = 0

for combination in list2:
for letter in combination:
    total_letters_compared = total_letters_compared + 1
    if list2letter == list1.ltter:
        total_correct_matches = total_correct_matches + 1
        # here I´d like to keep track of which letter-pair is compared and
                    # add 1 to the correct variable or continue to the next letter-pair

1 个回答

1

使用zip函数可以同时遍历多个集合。(注意:这段代码假设两个列表的项目数量相同,并且每个项目都是正确的整数型配置)

matches = {0:0, 1:0, 2:0, 3:0}

for item1, item2 in zip(list1, list2):
   for i in xrange(4):
      if item1[i]==item2[i]: 
         matches[i] += 1

and you can extract data you want by:

total_letters_compared = #length of a list * 4
total_correct_matches = #sum(matches.values())
nth_letter_pair_matches = #matchs[n-1]

撰写回答