Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以使字典的字典顺序忽略大小写?_Python_Python 3.x - Fatal编程技术网

Python 有没有一种方法可以使字典的字典顺序忽略大小写?

Python 有没有一种方法可以使字典的字典顺序忽略大小写?,python,python-3.x,Python,Python 3.x,有没有一种方法可以使字典的字典顺序忽略大小写?现在我知道了字典的字典顺序,但仍然不知道如何忽略小写和大写。以下是我尝试过的一些代码 dic={'subject':'math','name':'','PS':'$'} for key,value in sorted(dic.items()): print(key+'='+value) 现在我有一个结果, p= $是第一个,但我想在中间,像这样: name= PS=$ subject=math 到位:不可能 原因:一旦修改了一个键,就不可

有没有一种方法可以使字典的字典顺序忽略大小写?现在我知道了字典的字典顺序,但仍然不知道如何忽略小写和大写。以下是我尝试过的一些代码

dic={'subject':'math','name':'','PS':'$'}
for key,value in sorted(dic.items()):
    print(key+'='+value)

现在我有一个结果,<强> p= $是第一个,但我想在中间,像这样:

name=
PS=$
subject=math

到位:不可能

原因:一旦修改了一个键,就不可能用修改过的键从同一个旧字典中检索到原始值。唯一的解决方法是将修改后的密钥与原始密钥一起存储

创建一个临时命令,例如
dic_lex

将修改后的键(小写)存储为
,将原始键存储为

dic={'subject':'math','name':'','PS':'$'}
dic_lex={key.lower() : key for key in dic.keys()}
for key in sorted(dic_lex.keys()):
    print(dic_lex[key]+'='+dic[dic_lex[key]])
印刷品:

name=
PS=$
subject=math

在Python 3.6和3.7中,字典是按插入顺序排列的,但是最好使用


排序
与字典构造函数一起使用

dic = dict(sorted(dic.items(), key=lambda x: x[0].lower()))
# {'name': '', 'PS': '$', 'subject': 'math'}

字典从不按词汇顺序排列;在Python3.6/3.7之前,顺序是任意的,然后顺序是基于记住插入顺序的,但是您实际询问的似乎是“我可以传递一个键到
sorted()
忽略大小写吗”,答案当然是肯定的(比如
sorted(dict.items(),key=lambda x:x[0].casefold()
);您可以将其输入到一个
OrderedDict
以保留排序结构如果您只想在打印过程中获得排序,您可以尝试对排序中的k,v(dic.items(),key=lambda x:x[0].lower():进行类似
的操作,但显然,打印出来的任何内容都会被丢弃,原词典本身不会有新的版本order@Chris_Rands所以我写的代码不能使我打印的是字典顺序?你可以看看。作为一个非常简短的解释,您说的是“我希望您在将元组转换为小写后,按照元组中的第一项(键)进行排序”。
参数将采用lambda函数并应用它们,以允许您更改默认排序规则
dic = dict(sorted(dic.items(), key=lambda x: x[0].lower()))
# {'name': '', 'PS': '$', 'subject': 'math'}