什么是从字典中获得项目的最佳方式,在Python中提供了几个键
在python字典" title="python字典">python字典中获取项目的最快方法是给出多少个键?什么是从字典中获得项目的最佳方式,在Python中提供了几个键
我想给用户从他们键入的键的val。例如:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
所以,如果他们输入Name
,该功能将打印Zara
**但是,如果用户用大写或小写字母写道,该功能仍然能够回到他在找什么对于。
因此,如果用户输入:Name
/NaMe
/namE
,我的函数仍然会返回val Zara
。
回答:
下面是一个应该有意义的假设 - 没有只区分区分大小写的密钥(否则,您的问题不再有意义)。
你要做的是创建一个新的字典所有小写字母键。相应地,在查询时,小写查询键并索引字典。以下是你如何做到这一点。
In [63]: n_dict = {k.lower() : v for k, v in dct.items()} In [64]: n_dict
Out[64]: {'age': 7, 'class': 'First', 'name': 'Zara'}
In [65]: key = 'NaMe' In [66]: n_dict.get(key.lower())
Out[66]: 'Zara'
作为一个侧面说明,不要用dict
命名您的变量,因为dict
是一个内建的,你最终会遮蔽的名称。
回答:
假设你的钥匙都是单个单词的第一个字母captial:
x = userInput.lower() y = x.title()
print myDict[y]
回答:
采取从requests
包一看CaseInsensitiveDict
。
虽然它在一个不相关的包中,但您可能已经在您的项目中使用它了。如果没有,或者你不想要依赖(很好避免),你可以复制代码或将它用作你自己实现的灵感。
一个优点是,CaseInsensitiveDict
支持一般词典的方法,包括操作者in
:
from requests.structures import CaseInsensitiveDict d = CaseInsensitiveDict({'Name': 'Zara', 'Age': 7, 'Class': 'First'})
>>> d.get('NAME')
'Zara'
>>> d.get('name')
'Zara'
>>> d['NaMe']
'Zara'
>>> d['NoName']
Traceback (most recent call last):
...
KeyError: 'noname'
>>> 'NoName' in d
False
>>> 'Name' in d
True
>>> 'NAME' in d
True
等
一个缺点是,该键必须是字符串。另一个原因是,只有一个每个键的情况下,变型是允许的(但是这尴尬/无厘头反正):
>>> CaseInsensitiveDict({'Name': 123, 'name': 456, 'NaMe': 789}) {'NaMe': 789}
回答:
另一种选择是使用正则表达式:
import re dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
key = "naMe"
new_data = [b for a, b in dict.items() if re.findall('^{}$'.format(key), a, re.IGNORECASE)][0]
输出:
'Zara'
以上是 什么是从字典中获得项目的最佳方式,在Python中提供了几个键 的全部内容, 来源链接: utcz.com/qa/262901.html