gpt4 book ai didi

python - 有序字典不排序

转载 作者:行者123 更新时间:2023-11-28 21:18:33 29 4
gpt4 key购买 nike

我一直在网上研究一种创建有序字典的简单方法,并找到了 OrderedDict 及其更新方法,我已经成功地实现了一次,但是现在代码往往不会对添加的术语进行排序,例如放置的元素是:

      Doc1:  Alpha, zebra, top 
Doc2: Andres, tell, exta
Output: Alpha, top, zebra, Andres, exta, tell
My goal is to have Alpha, Andres......, top, zebra

这是代码:

    finalindex= collections.OrderedDict()
ctr=0
while ctr < docCtr:
filename = 'dictemp%d.csv' % (ctr,)
ctr+=1
dicTempList = io.openTempDic(filename)
print filename
for key in dicTempList:
if key in finalindex:
print key
for k, v in finalindex.items():
newvalue = v + "," + dicTempList.get(key)
finalindex.update([(key, newvalue)])
else:
finalindex.update([(key, dicTempList.get(key))])
io.saveTempDic(filename,finalindex)

有人可以帮助我吗?

最佳答案

OrderedDicts 记住它们的创建顺序。如果你想要它排序,你需要在创建它们时这样做。下面是如何对 OrderedDict 进行排序,an example taken from the docs :

from collections import OrderedDict

d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
sorted_dict = OrderedDict(sorted(d.items(), key=lambda t: t[0]))

这将与另一个有序的字典一起工作,为了读者的清晰起见,我更喜欢从中导入模块和引用函数和类,所以这是以稍微不同的方式完成的,但同样,要对其进行排序,你在创建新的 OrderedDict 之前需要对其进行排序:

import collections
ordered_dict=collections.OrderedDict()
ordered_dict['foo'] = 1
ordered_dict['bar'] = 2
ordered_dict['baz'] = 3
sorted_dict = collections.OrderedDict(sorted(ordered_dict.items(),
key=lambda t: t[0]))

sorted_dict 返回:

OrderedDict([('bar', 2), ('baz', 3), ('foo', 1)])

如果 lambda 令人困惑,您可以使用 operator.itemgetter

import operator
get_first = operator.itemgetter(0)
sorted_dict = collections.OrderedDict(sorted(ordered_dict.items(),
key=get_first))

我正在使用关键参数来演示它们的用法,以防您想按值排序,但 Python 对元组进行排序(dict.items() 提供的通过 进行迭代的功能>list 在 Python 2 中,在 Python 3 中是迭代器)按第一个元素然后是第二个元素依此类推,因此您甚至可以这样做并获得相同的结果:

sorted_dict = collections.OrderedDict(sorted(ordered_dict.items()))

关于python - 有序字典不排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331827/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com