计算 python 列表中不区分大小写的相同元素

Count the same elements with insensitive case in a list in python

我是 python 的新手,我有一个关于在不区分大小写的列表中计算元素的问题。例如我有一个列表如下:

My_list = ['modulus of elasticity', 'NIRS', 'mechanical properties', 'Modulus of elasticity', 'NIRS', 'mechanical properties']

我想要的词典应该是这样的:

Desired_dictionary = {'modulus of elasticity': 2, 'NIRS': 2, 'mechanical properties': 2}

实际上我知道如何以正常方式计算它们,但是像这样的词:弹性模量弹性模量会算作为不同的元素。注意到:我想让NIRS保持大写。我想知道 python 中是否有办法处理这种敏感情况。任何帮助都感激不尽。谢谢!

使用 collections.Counter:

from collections import Counter

orig = Counter(My_list)
lower = Counter(map(str.lower, My_list))

desired = {}
for k_orig in orig:
     k_lower = k_orig.lower()
     if lower[k_lower] == orig[k_orig]:
         desired[k_orig] = orig[k_orig]
     else:
         desired[k_lower] = lower[k_lower]

desired
# {'modulus of elasticity': 2, 'NIRS': 2, 'mechanical properties': 2}