2024-10-01 13:35:57 发布
网友
我有一本如下词典
d = { 'hain': {'facet': 1, 'wrapp': 1, 'chinoiserie': 1}, 'library': {'sconc': 1, 'floor': 1, 'wall': 2, 'lamp': 6, 'desk': 1, 'table': 1, 'maine': 1} }
因此,我想根据最终值对字典进行反向排序:
所以我希望打印出这样的东西:
等等。。。在
我怎么得到这个?在
谢谢
我不确定您希望如何对输出进行排序,但这可以让您开始:
>>> for key in d: for key2 in d[key]: print key, key2, d[key][key2]
以下是如何获取要查找的已排序列表:
items = ((k, k2, v) for k in d for k2, v in d[k].items()) ordered = sorted(items, key=lambda x: x[-1], reverse=True)
这首先将字典转换为一个生成元组(key_1, key_2, value)的生成器,然后根据值对其进行排序。reverse=True使其从高到低排序。在
(key_1, key_2, value)
reverse=True
结果如下:
请注意,当值完全匹配时,顺序是任意的(除了项目总是按key_1分组),如果您希望其他行为,只需使用您在这些场景中所期望的来编辑您的问题。在
key_1
获得此列表后,可以通过如下方式迭代将其打印出来:
for key_1, key_2, value in ordered: print key_1, key2, value # add whatever formatting you want to here
如果您想先按value反向排序,然后按key升序排序,然后按key_2进行排序:
value
key
key_2
dout={} for e in d: for es in d[e]: lineOut='%s %s %i' % (e, es, d[e][es]) key= d[e][es] dout.setdefault(key, []).append(lineOut) for e in sorted(dout, reverse=True): for ea in sorted(dout[e], reverse=False): print ea
印刷品:
我不确定您希望如何对输出进行排序,但这可以让您开始:
以下是如何获取要查找的已排序列表:
这首先将字典转换为一个生成元组
(key_1, key_2, value)
的生成器,然后根据值对其进行排序。reverse=True
使其从高到低排序。在结果如下:
^{pr2}$请注意,当值完全匹配时,顺序是任意的(除了项目总是按
key_1
分组),如果您希望其他行为,只需使用您在这些场景中所期望的来编辑您的问题。在获得此列表后,可以通过如下方式迭代将其打印出来:
如果您想先按
value
反向排序,然后按key
升序排序,然后按key_2
进行排序:印刷品:
^{pr2}$相关问题 更多 >
编程相关推荐