按字典中的unicode格式按值对列表中的字典进行排序

时间:2014-05-03 16:19:10

标签: python sorting dictionary unicode

我有一个字典,其格式为五种格式。

{
    'name': l.employee_id.name,
    'acc_no': l.name,
    'ifsc_code': l.ifsc_code,
    'bysal': l.bysal,
    'debit_credit': l.debit_credit,
}

并附加到列表'结果'。

现在结果有值=

[{'ifsc_code': u'234', 'bysal': 4985.0, 'debit_credit': u'C', 'name': u'Ammu Kripalal', 'acc_no': u'789789'}, {'ifsc_code': u'546546456121', 'bysal': 7470.0, 'debit_credit': u'C', 'name': u'Ajayakumar KN', 'acc_no': u'SBI0814278'}, {'ifsc_code': u'54666555', 'bysal': 7571.25, 'debit_credit': u'C', 'name': u'Ramesh', 'acc_no': u'6657567'}, {'ifsc_code': u'5466655554656', 'bysal': 19220.0, 'debit_credit': u'C', 'name': u'Vineesh V', 'acc_no': u'23465778'}, {'ifsc_code': u'985654', 'bysal': 7080.0, 'debit_credit': u'C', 'name': u'Abith Ganesh', 'acc_no': u'676'}, {'ifsc_code': u'SIBL0000488', 'bysal': 9680.0, 'debit_credit': u'C', 'name': u'Ammu G', 'acc_no': u'123'}]

我想基于ifsc_code对字典进行排序。 我试过

sorted(result, key=itemgetter('ifsc_code'))

但它不起作用。

因为它是一个unicode字符串,所以在排序时只考虑ifsc_code的第一个字母。

我该如何解决这个问题。?

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用整数比较而不是字符串比较:

def get_ifsc(record):
    return int(record.ifsc_code)

print sorted(result, key=get_ifsc)

代码SIBL0000488存在问题,目前还不清楚您希望如何对其进行排序。一旦有可能它会截取字母并仅保留密钥的数字部分:

def get_ifsc(record):
    return int(''.join(filter(unicode.isdigit, record.ifsc_code)))