在字典中排序数组

2024-10-02 12:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

数组中的信息与我想要的顺序相反。理想情况下,它可以按数组中的日期排序,但我100%确定只要颠倒顺序就行了。 通过这样的方式:

sorted(Dictionary[self], key=lambda i: i[1][0], reverse=True)

我知道上面的方法只是将数组本身按逆序排序,而不是将数组中的数据按逆序排序。 使用这样的字典(所有项都是一个文件名)

Dictionary = {'a':[XPJulianDay(Timefurthestinpastfromnow), ... XPJulianDay(timeclosest2currnttime)], 'b':[RQJulianDay(Timefurthestinpastfromnow), ... RQJulianDay(timeclosest2currnttime)], 'c':[WSJulianDay(Timefurthestinpastfromnow), ... WSJulianDay(timeclosest2currnttime)] ..... (9 different ones total) }

变成这样

Dictionary = {'a':[XPJulianDay(timeclosest2currnttime), ... XPJulianDay(Timefurthestinpastfromnow)], 'b':[RQJulianDay(timeclosest2currnttime), ... RQJulianDay(Timefurthestinpastfromnow)], 'c':[WSJulianDay(timeclosest2currnttime), ... WSJulianDay(Timefurthestinpastfromnow)] .... }

Tags: 信息dictionary排序顺序方式情况数组sorted
2条回答

你可以试试:

Dictionary.update({ k: sorted(v) for k, v in Dictionary.items() })

它用自己的键和排序的值更新字典。你知道吗

示例:

>>> Dictionary = {"a": [7,6,1,2], "b": [8,0,2,5] }
>>> Dictionary.update({ k: sorted(v) for k, v in Dictionary.items() })
>>> Dictionary
{'a': [1, 2, 6, 7], 'b': [0, 2, 5, 8]}
>>> 

注意,使用dict理解为.update()调用创建了一个新字典。你知道吗

如果需要,您可以用reversed()替换sorted();但是reversed()返回一个迭代器,因此如果您想要一个列表,您需要用list()调用它(如果可以,最好保留迭代器)。你知道吗

reversed为例:

>>> Dictionary = {"a": [7,6,1,2], "b": [8,0,2,5] } ; Dictionary.update({ k: reversed(v) for k, v in Dictionary.items() })
>>> Dictionary
{'a': <list_reverseiterator object at 0x7f537a0b3a10>, 'b': <list_reverseiterator object at 0x7f537a0b39d0>}
>>>

您可以使用@mguijarr所述的dict理解,或者使用dictzip

Dictionary = dict(zip(Dictionary, map(sorted, Dictionary.values()))))

但是如果你的键真的只是'a''b'...那么你为什么要使用dict呢?用一张单子。。。你知道吗

相关问题 更多 >

    热门问题