python按值数组排序字典

弗朗克

我有一本以数组为元素的字典。说:

masterListShort = {'a': [5, 2, 1, 2], 'b': [7, 2, 4, 1], 'c': [2, 0, 1, 1]}

我想按值的第一个元素对字典进行反向排序。然后,我想将输出写入这样的制表符分隔文件中:

<key>    <value1>    <value2>    <value3>    etc.

我当前在字典中写入文件的代码如下所示:

# write the masterListShort to file
outFile2 = open('../masterListShort.tsv', 'w')
for item in sorted(masterListShort):
    tempStr = '\t'.join(map(str, masterListShort[item]))
    outFile2.write(str(item) + '\t' + tempStr + '\n')

outFile2.close()

这段代码可以正常工作,只是不对列表进行排序。我希望输出以制表符分隔的文件格式编写。所以:

b    7    2    4    1
c    5    2    1    2
a    2    0    1    1

到目前为止,我已经找到以下命令,并且想知道是否可以将它们应用于我的代码:

import operator
sorted(myDict, key=operator.itemgetter(1))
马丁·彼得斯(Martijn Pieters)

然后,您需要在第一个索引进行排序(因此对于从零开始的索引编制),并告诉要颠倒顺序:0sorted()

import operator

sorted(myDict.values(), key=operator.itemgetter(0), reverse=True)

如果没有dict.values()通话,您将尝试对按键进行排序。

演示:

>>> import operator
>>> myDict = {'a': [5, 2, 1, 2], 'b': [7, 2, 4, 1], 'c': [2, 0, 1, 1]}
>>> sorted(myDict.values(), key=operator.itemgetter(0), reverse=True)
[[7, 2, 4, 1], [5, 2, 1, 2], [2, 0, 1, 1]]

如果要输出键值对,则使用dict.items()并使用lambda来访问值上的第一个索引:

sorted(myDict.items(), key=lambda i: i[1][0], reverse=True)

演示:

>>> sorted(myDict.items(), key=lambda i: i[1][0], reverse=True)
[('b', [7, 2, 4, 1]), ('a', [5, 2, 1, 2]), ('c', [2, 0, 1, 1])]

在这两种情况下,按第一个元素进行排序实际上并没有多大意义您可以让列表自然排序:

sorted(myDict.values(), reverse=True)  # sort just the values
sorted(myDict.items(), key=operator.itemgetter(1), reverse=True)  # sort items

因为列表的列表按字典顺序排序;如果第一个元素相等,则根据第二个元素对两个列表进行排序,依此类推。

要将其写到制表符分隔的文件中,请使用csv模块;它将负责将值转换为字符串,编写制表符分隔符并处理换行符:

import csv

with open('../masterListShort.tsv', 'wb') as outfh:
    writer = csv.writer(outfh, delimiter='\t')
    for key, values in sorted(myDict.items(), key=operator.itemgetter(1), reverse=True):
        writer.writerow([key] + values)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按字典数组排序。

来自分类Dev

按字典数组排序。

来自分类Dev

按字典python中的实际值排序

来自分类Dev

Python:按值对嵌套字典进行排序

来自分类Dev

按值对排序字典

来自分类Dev

按值排序字典

来自分类Dev

在Python中按字典的值按降序对其排序,其键按升序对字典进行排序

来自分类Dev

根据数组中的值按关键字对字典排序

来自分类Dev

返回键按数组字典中的值排序

来自分类Dev

按特定键的值对数组中的字典进行排序

来自分类Dev

按Python中的值对字典中的值进行排序

来自分类Dev

按值字典中的值对python进行排序

来自分类Dev

按值的长度对字典排序

来自分类Dev

快速按值排序字典

来自分类Dev

按多个值对字典排序

来自分类Dev

按值属性对字典排序

来自分类Dev

按字典嵌套值排序

来自分类Dev

python按值对字典项进行排序,然后按键

来自分类Dev

按值对python中的多个字典进行排序

来自分类Dev

在python中对字典值进行排序-按字母顺序降序

来自分类Dev

python按值对字典项进行排序,然后按键

来自分类Dev

按值对python中的多个字典进行排序

来自分类Dev

python计数器按升序对字典值进行排序

来自分类Dev

按值对字典排序,其中value是字典

来自分类Dev

按值的INT值对字典进行排序

来自分类Dev

按值的INT值对字典进行排序

来自分类Dev

按其值的值对字典进行排序

来自分类Dev

Swift:对字典排序(按键或按值)并返回有序数组(按键或值)

来自分类Dev

Swift:对字典排序(按键或按值)并返回有序数组(按键或值)