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
>>>
看看这个: