2014-11-23 181 views
2

假设我有一个python字典aa = {"name": "nilesh", "age":29} 当我将它存储在redis哈希中时,所有数据类型都变为字符串。将redis哈希转换为python字典?

import redis 
r = redis.StrictRedis() 
r.hmset("nilesh_123", aa) 
bb = r.hgetall("nilesh_123") 

现在bb为{'age': '29', 'name': 'nilesh'}。是否有任何pythonic的方式来再次将此哈希返回值转换为python字典格式?我看到的一种方式是将字典值的所有数据类型存储在某处,然后在通过迭代redis哈希值来获取该哈希值时再次将其转换,但我正在寻找更好的pythonic解决方案。

我可以将字典存储为redis字符串中的pickled对象,然后得到它并使用pickle重新加载它,但我更喜欢使用散列与字符串比较。

回答

-1
{'age': '29', 'name': 'nilesh'} 

是JSON格式,试图寻找能转换JSON工具到Python字典一样:

Converting JSON into Python dict

+0

蟒蛇字典也是一个JSON ...!我想将转换后的值的字符串数据类型更改为那些较旧的数据类型。 – 2014-11-23 13:00:24

+0

@NIleshSharma * python dict也是一个json * - 不是,它可以转换为JSON。 – vaultah 2014-11-23 13:15:21

+0

@vaultah同意,但python可以转换为JSON,但这不是我在这里问的 – 2014-11-23 13:32:20

-1

好了,我不会说Python的方式,但

mydict = eval("{'age': '29', 'name': 'nilesh'}") 

或(略)更好ast.literal_eval还有人说eval is evil

+0

eval(“{'age':'29','name':'nilesh'}”)返回{'age':'29','name':'nilesh'},29仍然是字符串...每当你使用'eval'时,我不想要 – 2014-11-25 15:06:54

+0

,上帝杀死一只小猫。 – paulus 2017-02-01 16:57:16