如何将字符串转换回冻结集?

2024-05-17 19:51:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用dictionary d作为dictionary dd的键。为此,我将dd的键转换为frozensets。我需要将dd存储在一个txt文件中,因此我将冻结集键转换为字符串;结果字典是“new”。然后json编码“new”。在

如何将“new”转换回字典并将键转换回冻结集?(如果有比使用frozensets和json更好的方法的话,我很乐意听到)。在

new = {}
d = {'key1':'value1'}
dd = {frozenset(d.items()):'my_value'}
for k,v in dd.iteritems(): 
  new[str(k)] = v
new = json.dumps(new)

newest = json.loads(new)
for k,v in newest.iteritems():
  print frozenset(k)

### result ###
frozenset([' ', "'", ')', '(', ',', '1', '[', ']', 'a', 'e', 'f', 'k', 'l', 'o', 'n', 's', 'r', 'u', 't', 'v', 'y', 'z'])

Tags: 文件字符串intxtjsonnewfordictionary
2条回答

如果您使用json.loads加载数据

newest = json.loads(new)
    for k,v in newest.iteritems():
        ....

您仍然有一个字符串值k,因为您在中将它解析为string

^{pr2}$

所以,你必须^{}像这样:

for k,v in newest.iteritems():
    k = eval(k)

它将从您的字符串中解析其原始值。在

import pickle  

d = {'key1':'value1'}
dd = {frozenset(d.items()):'my_value'}

# Save to dumpfile
pickle.dump(dd, open('dumpfile', 'wb'))

# Load again from dumpfile
dd = pickle.load(open('dumpfile', 'rb'))

相关问题 更多 >