我有一个词典:
self.currentMsg={'Decimal Label value':'','SDI value':'','Label format':''}
for i in range (self.firstRowIdx, self.lastRowIdx) :
self.currentMsg['Decimal Label value']=self.xlManager.getCellValue(i,LABEL_COL_IDX)
self.currentMsg['SDI value']= SDIValue=self.xlManager.getCellValue(i,SDI_COL_IDX)
self.currentMsg['Label format']=LabelFormat=self.xlManager.getCellValue(i,FORMAT_COL_IDX)
sorted_x = sorted(self.currentMsg.items(),key=operator.itemgetter('Decimal Label value'))
print(sorted_x)
我想根据'十进制标签值'的增加值对dict进行排序。
我试过这个:
sorted_x = sorted(self.currentMsg.items(), key=itemgetter(''Decimal Label value''))
但我收到此错误
TypeError: tuple indices must be integers, not str
然后我尝试了这个:
sorted_x = sorted(self.currentMsg.items(), key=itemgetter('0'))
但是dict仍未排序。 控制台显示:
[('Decimal Label value', 324.0), ('Label format', 'BNR'), ('SDI value', 'XX')]
[('Decimal Label value', 331.0), ('Label format', 'BNR'), ('SDI value', 'XX')]
[('Decimal Label value', 312.0), ('Label format', 'BNR'), ('SDI value', 'XX')]
答案 0 :(得分:1)
看起来你可能有一个列表的dicts,而不是一个 dict。
因此,请尝试:
sorted_x = sorted(self.currentMsg,
key=operator.itemgetter('Decimal Label value'))
第二个想法,因为你使用的是self.currentMsg.items()
并且它没有引发AttributeError
,所以看起来self.currentMsg
可能是一个字典。
然后self.currentMsg.items()
将是键/值对的元组。这与你的第一个陈述相矛盾,因为它只显示了3个序列的序列。
为了更好地回答您的问题,我们需要了解self.currentMsg
的真实情况。