我想先按键的长度对字典排序,然后按值列表中的一个元素排序。你知道吗
到目前为止,我已经接近使用lambda排序,但我遇到了问题,因为我的值是列表。文档不清楚如何处理这个问题(或者至少据我所知)。你知道吗
# What I have so far is:
d = {'ATCG': [1,2,3], 'ATTT':[1,3,5], 'GCT':[2,4,8], 'TCC': [4,5,6], 'AC':
[7,8,9]}
value_sort = sorted(d.items(), key=lambda item: item[0])
# this only sorts by the first item in my list-- how do I sort by
the third item in my list?
key_sort = sorted(value_sort, key=len, reverse=True)
# sorts by largest length key
for k in key_sort:
v = d[k[0]]
print(k[0) + ":" + str(v))
我希望输出是这样的:
ATCG:[1,2,3]
ATTT:[1,3,5]
TCC:[4,5,6]
GCT:[2,4,8]
AC:[7,8,9]
其中排序是按最大键,然后按值列表中最小的第三个值。你知道吗
编辑:我把钥匙弄清楚了
如果您将键函数分解为它自己的函数而不是使用lambda,那么可以更容易地准备键函数。你知道吗
此外,您可能希望在排序后使用
OrderedDict
来维护顺序:如果想要更干净的输出,可以使用
pprint
(漂亮的打印):下面是一个按值的长度然后按值排序字典的示例
例1:
输出
例2:
输出
相关问题 更多 >
编程相关推荐