在 python 中,我们如何在将字典打印为字符串、打印到控制台或打印到文件时忽略字典键中的大小写敏感?

问题描述 投票:0回答:2

在 python 中,你如何漂亮地打印 一个字典,这样字典键-区分大小写?

例如,大写字母

Apple
A
和小写字母
apple
a
将彼此靠近。

结果应以与以下示例相同的样式打印:

d = {
     'approx'             : 'approximately' ,
     'dfrac'              : 'display fraction' ,
     'Leftrightarrow'     : 'Left and right arrow' ,
     'rangle'             : 'right angle' ,
     'vDash'              : 'vertical turnstile with double dash' ,
     'vdash'              : 'vertical turnstile with single dash' ,
     'lhd'                : 'left lazy head' ,
     'lim'                : 'limit' ,
     'xleftarrow'         : 'left arrow with parameter input' ,
     'varlimsup'          : 'variable limit supremum' ,
     'simeq'              : 'similar or equal' ,
     'iff'                : 'if and only if' ,
     'lt'                 : 'less than' ,
     'notin'              : 'not element of or in' ,
     'equiv'              : 'equivalent to' ,
     'ge'                 : 'greater than or equal' ,
     'Gamma'              : 'big uppercase Gamma' ,
     'cong'               : 'congruent' ,
     'infty'              : 'infinity' ,
     'subsetneq'          : 'subset of and not equal to' ,
     'prod'               : 'product' ,
     'varepsilon'         : 'variable epsilon' ,
     'sum'                : 'summation' ,
     'mathbb'             : 'mathematics black board bold' ,
     'le'                 : 'less than or equal to' ,
     'bar'                : 'over bar' ,
     'lbrace'             : 'left brace' ,
     'mu'                 : 'greek letter mu' ,
     'cdots'              : 'centered dots' ,
     'mp'                 : 'minus plus' ,
     'lnot'               : 'logical not' ,
     'spadesuit'          : 'spade suit symbol' ,
     'ell'                : 'script el el' ,
     'subseteq'           : 'subset or equal' ,
     'rceil'              : 'right ceiling' ,
     'vdots'              : 'vertical dots' ,
     'mapsto'             : 'maps to arrow' ,
     'genfrac'            : 'generalized fraction' ,
     'varliminf'          : 'variable limit infimum' ,
     'rVert'              : 'right vertical bar' ,
     'iint'               : 'integral integral' ,
     'iiint'              : 'integral integral integral' ,
     'lVert'              : 'left vertical bar' ,
     'ddot'               : 'double diagonal dot' ,
     'varnothing'         : 'variable nothing' ,
     'frac'               : 'fraction' ,
}

在这个特定的例子中,输入(键)是 LaTeX 命令,输出(值)是英语短语,单词全拼,这样键是通过从完整中删除零个或多个字母形成的子序列英语短语。

python python-3.x dictionary pretty-print
2个回答
2
投票

您可以使用

sorted
并给它一个键来比较小写的键。下面是一个粗鲁的解决方案:

print("d = {")

for k, v in sorted(d.items(), key=lambda x: x[0].casefold()):
    print(f"\t{k!r:<20}: {v!r} ,")

print("}")

-2
投票
reps_of_keys = (repr(key).lower().strip() for key in d)

sorted_rkeys = list(sorted(reps_of_keys))

print("{")
for key in d:
    print(
            4*" ",
            repr(key).ljust(20),
            ":",
            repr(d[key]),
            ","
        )
print("}")
    
© www.soinside.com 2019 - 2024. All rights reserved.