我使用字典d作为字典dd的键。为此,我将dd的键转换为frozensets。我需要将dd存储在txt文件中,因此我将freezeset键转换为字符串;结果字典是“新的”。然后我json编码“新”。
如何将“new”转换回字典并将密钥转换回frozensets? (如果有比使用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'])
答案 0 :(得分:0)
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'))
答案 1 :(得分:0)
请您使用json.loads
newest = json.loads(new)
for k,v in newest.iteritems():
....
您仍然将字符串值设置为k
,因为您将其解析为
new[str(k)] = v
所以,你必须eval
喜欢:
for k,v in newest.iteritems():
k = eval(k)
它会从你的字符串中解析原文。