Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中对redis中的dict列表进行排序_Python_Sorting_Dictionary_Redis - Fatal编程技术网

在python中对redis中的dict列表进行排序

在python中对redis中的dict列表进行排序,python,sorting,dictionary,redis,Python,Sorting,Dictionary,Redis,在我当前的项目中,我生成了一个数据列表,每个条目来自一个特殊数据库中redis中的一个键,其中只有一种类型的键存在 r = redis.StrictRedis(host=settings.REDIS_AD, port=settings.REDIS_PORT, db='14') item_list = [] keys = r.keys('*') for key in keys: item = r.hgetall(key)

在我当前的项目中,我生成了一个数据列表,每个条目来自一个特殊数据库中redis中的一个键,其中只有一种类型的键存在

r = redis.StrictRedis(host=settings.REDIS_AD, port=settings.REDIS_PORT, db='14')

        item_list = []
        keys = r.keys('*')
        for key in keys:
            item = r.hgetall(key)
            item_list.append(item)
        newlist = sorted(item_list, key=operator.itemgetter('Id'))
上面的代码让我可以检索数据,创建一个dict列表,每个dict都包含一个条目的信息,问题是我希望能够按ID对它们进行排序,这样当它们显示在模板的html选项卡上时,它们就会按顺序出现,但是排序函数似乎不起作用,因为表没有排序

知道为什么排序的行不起作用吗?我想我错过了一些让它工作的东西,但我找不到什么

编辑:

多亏了评论中的答案,问题在于我的“Id”是以字符串形式从redis中出来的,需要将其转换为int进行排序


key=lambda d:int(d['Id'])

从redis返回的所有值显然都是字符串,并且字符串不按数字排序(
“10”<“2”==True

因此,您需要将其转换为一个数值,可能是
int
(因为它们似乎是id):


从redis返回的所有值显然都是字符串,并且字符串不按数字排序(
“10”<“2”==True

因此,您需要将其转换为一个数值,可能是
int
(因为它们似乎是id):


您确定
'Id'
后面的值的类型是您认为的类型吗?它可能是一个字符串,但你希望它能按数字排序。没想过,但没错,redis中的每个数据都是一个字符串,还有办法对它们进行排序吗?自己编写键函数:
key=lambda d:int(d['Id'])
。完美的解决方案非常感谢@graipher您确定
'Id'
后面的值的类型是您认为的类型吗?它可能是一个字符串,但你希望它能按数字排序。我没想过,但是的,redis中的每个数据都是一个字符串,还有办法对它们进行排序吗?自己编写键函数:
key=lambda d:int(d['Id'])
。非常感谢@Graipher提供了完美的解决方案
newlist = sorted(item_list, key=lambda d: int(d['Id']))