我正在尝试打印 Python 3.4 中的字典字典。该词典由正在解析需求文本文件的文本解析器填充。添加到字典中的每个需求(键)都以字典的形式具有与其关联的各种值,其中之一是数字
。我正在尝试打印字典,以便键按其数值排序
。这是我正在使用的代码:
import pprint
from operator import itemgetter
reqs = sorted(reqs.values(), key=itemgetter('number'))
pprint.pprint(reqs)
不幸的是,以这种方式使用sorted
会导致print
只打印字典的值,所以我最终得到了一个字典列表。自从我编写这段代码以来已经有几周了,但我记得搜索了很长一段时间并尝试了 sorted
的不同变体。这是第一个打印出按 number
值排序的值,但我现在意识到值字典缺少键。
我将此打印结果与打印下面没有sorted
的值时发生的情况进行比较。您可以看到,通过sorted
,值位于列表中并且缺少它们的键。
没有排序
(是的,3、4、5 按顺序排列是巧合 - 它们是前三个打印的):
{'PROJ-UX-HLR-0003': {'category': 'UX',
'file': 'rm/app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0003',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 3rd requirement.'},
'PROJ-UX-HLR-0004': {'category': 'UX',
'file': 'rm/app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0004',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 4th requirement.'},
'PROJ-UX-HLR-0005': {'category': 'UX',
'file': 'rm/app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0005',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 5th requirement.'}, # etc.
经过排序
:
[{'category': 'UX',
'file': 'app/parse/example_reqs.txt',
'level': 'SYS',
'number': '0001',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 1st requirement.'},
{'category': 'UX',
'file': 'app/parse/example_reqs.txt',
'level': 'SYS',
'number': '0002',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 2nd requirement.'},
{'category': 'UX',
'file': 'app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0003',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 3rd requirement.'}, # etc.
与此类似question ,但他的 key 仍然卡在身边,尽管在错误的地方。
任何有关打印完整的、排序的词典的帮助都将受到赞赏。
最佳答案
使用原始字典的排序项创建一个 OrderedDictionary
。
import operator, collections
number = operator.itemgetter('number')
item_one = operator.itemgetter(1)
def f(foo):
return number(item_one(foo))
d = {'PROJ-UX-HLR-0005': {'category': 'UX',
'file': 'rm/app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0005',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 5th requirement.'},
'PROJ-UX-HLR-0003': {'category': 'UX',
'file': 'rm/app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0003',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 3rd requirement.'},
'PROJ-UX-HLR-0004': {'category': 'UX',
'file': 'rm/app/parse/example_reqs.txt',
'level': 'HLR',
'number': '0004',
'prefix': 'PROJ',
'repo': 'repo',
'text': 'This SHALL be the 4th requirement.'}
}
ds = sorted(d.items(), key = f)
od = collections.OrderedDict(ds)
关于python - 使用sorted(dict.values(), ...)后打印字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242482/