在 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 命令,输出(值)是英语短语,单词全拼,这样键是通过从完整中删除零个或多个字母形成的子序列英语短语。
您可以使用
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("}")
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("}")