我正在努力查看是否存在一种方法来访问python字典,其中字符串为具有正确字符串但不区分大小写的键
例如使用此代码:
dictionary = {'one': 1, 'two': 2, 'three', 3}
list = ['One', 'second', 'THree']
for item in list:
if item in dictionary:
print(item)
我无法找到输出为: `一个THree',即。比较字典的键和我不区分大小写的字符串
有办法吗?
答案 0 :(得分:1)
您需要通过将dictionary.keys()
转换为小写或list
元素转换为小写或两者来处理不区分大小写:
for item in list:
if item.lower() in map(str.lower, dictionary.keys()):
print(item)
您可以使用lower()
或upper()
,但在这两种情况下都必须保持一致。
答案 1 :(得分:1)
创建一个小写字典键列表,然后将列表中每个项目的小写变体与此列表进行比较。
dictionary = {'one': 1, 'two': 2, 'three': 3}
list = ['One', 'second', 'THree']
for item in list:
if item.lower() in [key.lower() for key in dictionary.keys()]:
print(item)
因此:
One
THree
答案 2 :(得分:0)
使用字符串方法lower
:
dictionary = {'one': 1, 'two': 2, 'three': 3}
list = ['One', 'second', 'THree']
for item in list:
if item.lower() in dictionary:
print(item)
输出:
One
THree
答案 3 :(得分:0)
试试这个:
dictionary = {'one': 1, 'two': 2, 'three': 3}
list = ['One', 'second', 'THree']
for item in list:
if item.lower() in [d.lower() for d in dictionary.keys()]:
print(item)
答案 4 :(得分:0)
使用casefold()
进行不区分大小写的搜索:
dictionary = {'one': 1, 'two': 2, 'three': 3}
list = ['One', 'second', 'THree']
for item in list:
if item.casefold() in dictionary:
print(item)
列表理解方式:
print( '\n'.join([item for item in list if item.casefold() in dictionary]))
答案 5 :(得分:0)
尝试使用python
lambda
关键字:
l = ['One', 'second', 'THree']
lc = lambda x: [i for i in x if i.lower() in dictionary]
print(lc(l))
输出:
['One', 'THree']
注意:我将变量名list
更改为l
因为list是python关键字所以如果你想调用list关键字,它不会调用list关键字而是它将调用列表
答案 6 :(得分:0)
正确的方法是使用casefold函数。此功能可从Python 3.3开始使用。
返回字符串的casefolded副本。大小写折叠的字符串可能用于无大小写的匹配。
折页与下折相似,但更具攻击性,因为它 旨在删除字符串中的所有大小写区别。例如, 德国的小写字母“ß”等效于“ ss”。因为它是 已经是小写的,lower()对“ß”无效。 casefold() 将其转换为“ ss”。
案例折叠算法在Unicode的3.13节中进行了描述 标准。
dictionary = {"one": 1, "two": 2, "three": 3}
list = ["One", "second", "THree"]
print(*(item for item in list if item.casefold() in dictionary), sep="\n")
输出:
One
THree