Python 3.x Python在两个列表中查找组合的频率

Python 3.x Python在两个列表中查找组合的频率,python-3.x,Python 3.x,我有两张名单 list1 = ['a', 'b', 'c', 'a'] list2 = ['A', 'B', 'C', 'D','A'] 我如何才能找到'a'、'b''b'和'c''c'的每个组合的频率?使用集合中恰当命名的计数器,如下所示: >>> from collections import Counter >>> Counter(zip(['a','b','c','a'],['A','B','C','A'])).most_common() [(('a

我有两张名单

list1 = ['a', 'b', 'c', 'a']
list2 = ['A', 'B', 'C', 'D','A']

我如何才能找到
'a'
'b''b'
'c''c'
的每个组合的频率?

使用
集合
中恰当命名的
计数器
,如下所示:

>>> from collections import Counter
>>> Counter(zip(['a','b','c','a'],['A','B','C','A'])).most_common()
[(('a', 'A'), 2), (('b', 'B'), 1), (('c', 'C'), 1)]
zip
快速创建应比较的对象对:

>>> zip(['a','b','c','a'],['A','B','C','A'])
[('a', 'A'), ('b', 'B'), ('c', 'C'), ('a', 'A')]

另一个答案是可以的,但它需要排序
list1
list2
,并且每个字母的数量相等

以下程序适用于所有情况:

from string import ascii_lowercase

list1 = ['a', 'b', 'c', 'a']
list2 = ['A', 'B', 'C', 'D','A']

for letter in ascii_lowercase:
    if letter in list1 and letter.capitalize() in list2:        
        n1 = list1.count(letter)
        n2 = list2.count(letter.capitalize())
        print letter,'-',letter.capitalize(), min(n1,n2)
输出:

>>> ================================ RESTART ================================
>>> 
a - A 2
b - B 1
c - C 1
>>> 
看看这个: