所以我有一个程序可以创建一个2D字典(也就是说,一个将每个字符映射到另一个字典的字典)。我将其字符串表示存储在一个看起来像这样的文件中。
Emission Dictionary:
{' ': {'A': 0.07801487990167236, 'C': 0.01087880333163352, 'E': 0.048483897540501315, 'D': 0.07454333869428209, 'G': 0.08257822408765805, 'F': 0.028334575504386825, 'I': 0.0395206527281999, 'H': 0.04682984871664117, 'K': 0.0453653944219982, 'M': 0.028569934230311587, 'L': 0.07167326978647734, 'N': 0.04869964303926568, 'Q': 0.03551301664509212, 'P': 0.09113612887197793, 'S': 0.07330770538317709, 'R': 0.046064932857385686, 'T': 0.06238313785483597, 'W': 0.009427424521764144, 'V': 0.05475359248944155, 'Y': 0.023921599393297507}, 'B': {'A': 0.051661016949152545, 'C': 0.013559322033898305, 'E': 0.042305084745762715, 'D': 0.042440677966101695, 'G': 0.06454237288135593, 'F': 0.06142372881355932, 'I': 0.07294915254237289, 'H': 0.03064406779661017, 'K': 0.037694915254237286, 'M': 0.03023728813559322, 'L': 0.09749152542372881, 'N': 0.0408135593220339, 'Q': 0.03023728813559322, 'P': 0.0471864406779661, 'S': 0.04854237288135593, 'R': 0.0568135593220339, 'T': 0.07525423728813559, 'W': 0.022779661016949154, 'V': 0.09383050847457627, 'Y': 0.03959322033898305}, 'E': {'A': 0.06982017732828409, 'C': 0.016122814576294248, 'E': 0.04564729358942379, 'D': 0.03127810910300309, 'G': 0.053750274004701545, 'F': 0.050273248826504004, 'I': 0.09449949734309925, 'H': 0.023099541183851487, 'K': 0.03690181939121824, 'M': 0.023530389955932485, 'L': 0.10936000060470003, 'N': 0.026894033878319235, 'Q': 0.03390099548742602, 'P': 0.02086970981957263, 'S': 0.047219513670000074, 'R': 0.04811144621571162, 'T': 0.07031905485385156, 'W': 0.019433547245969296, 'V': 0.13722155453260468, 'Y': 0.04174697838953264}, 'G': {'A': 0.10475171232876712, 'C': 0.009289383561643836, 'E': 0.08446061643835616, 'D': 0.08240582191780822, 'G': 0.05898972602739726, 'F': 0.04794520547945205, 'I': 0.030950342465753424, 'H': 0.029794520547945205, 'K': 0.04897260273972603, 'M': 0.0194777397260274, 'L': 0.08625856164383562, 'N': 0.040625, 'Q': 0.045077054794520545, 'P': 0.06643835616438357, 'S': 0.06357020547945205, 'R': 0.05333904109589041, 'T': 0.04041095890410959, 'W': 0.023715753424657534, 'V': 0.0293236301369863, 'Y': 0.03420376712328767}, 'I': {'A': 0.0625, 'C': 0.0, 'E': 0.010416666666666666, 'D': 0.14583333333333334, 'G': 0.10416666666666667, 'F': 0.041666666666666664, 'I': 0.07291666666666667, 'H': 0.020833333333333332, 'K': 0.03125, 'M': 0.041666666666666664, 'L': 0.08333333333333333, 'N': 0.0625, 'Q': 0.0, 'P': 0.03125, 'S': 0.020833333333333332, 'R': 0.020833333333333332, 'T': 0.09375, 'W': 0.010416666666666666, 'V': 0.13541666666666666, 'Y': 0.010416666666666666}, 'H': {'A': 0.1327115346551383, 'C': 0.00959732742431484, 'E': 0.08545386958641699, 'D': 0.047079042777624903, 'G': 0.0352368676408823, 'F': 0.036472740790089844, 'I': 0.05859293910910925, 'H': 0.021516744632882917, 'K': 0.053374271631400835, 'M': 0.031389246938075994, 'L': 0.1245866342249965, 'N': 0.030240271119672108, 'Q': 0.0567053359788743, 'P': 0.021468468337991996, 'S': 0.039340352706610474, 'R': 0.06604679904026725, 'T': 0.04166244249086371, 'W': 0.016244973230794484, 'V': 0.06256125054914285, 'Y': 0.029718887134850176}, 'S': {'A': 0.06946781854220427, 'C': 0.012173230113317626, 'E': 0.05912711769325704, 'D': 0.0848199259508583, 'G': 0.14377875014024458, 'F': 0.03349040727027937, 'I': 0.03603350910654849, 'H': 0.026964359175735815, 'K': 0.04772055798646172, 'M': 0.019129361606641984, 'L': 0.05858483862522906, 'N': 0.058435244399566176, 'Q': 0.0371367665208123, 'P': 0.0511986237331239, 'S': 0.06621414413403642, 'R': 0.05301245371928644, 'T': 0.06103444407045888, 'W': 0.009667526833464229, 'V': 0.04414899584876024, 'Y': 0.02786192452971315}, 'T': {'A': 0.07681286088862779, 'C': 0.006318685254968264, 'E': 0.06944822546673735, 'D': 0.08379063802960182, 'G': 0.18785551559611996, 'F': 0.026034129497227516, 'I': 0.020833034831573366, 'H': 0.028527216196466695, 'K': 0.050119639505394525, 'M': 0.013984210450904819, 'L': 0.05532073417104867, 'N': 0.07512214692017824, 'Q': 0.04357170489877208, 'P': 0.07099565859040305, 'S': 0.05172438496697376, 'R': 0.04718238218732538, 'T': 0.038155688965942146, 'W': 0.009313254910950955, 'V': 0.023913572994426376, 'Y': 0.02097631567635723}}
Transition Dictionary:
{' ': {' ': 0.5832317477143236, 'B': 0.028011130250430633, 'E': 0.09403736584073141, 'G': 0.024983437127335365, 'I': 7.28766397243938e-05, 'H': 0.07186961706638399, 'S': 0.11708625944083742, 'T': 0.0807075659202332}, 'B': {' ': 0.6012203389830508, 'B': 0.03105084745762712, 'E': 0.032406779661016946, 'G': 0.019932203389830507, 'I': 0.00013559322033898305, 'H': 0.04542372881355932, 'S': 0.12298305084745763, 'T': 0.14684745762711865}, 'E': {' ': 0.11143781463060666, 'B': 0.0022222558164144584, 'E': 0.8144114045563803, 'G': 0.003990990037642293, 'I': 0.0, 'H': 0.005041648399824638, 'S': 0.03269134831970249, 'T': 0.030204538239429167}, 'G': {' ': 0.09708904109589041, 'B': 0.00821917808219178, 'E': 0.017636986301369863, 'G': 0.7022688356164384, 'I': 0.0, 'H': 0.04297945205479452, 'S': 0.06528253424657535, 'T': 0.06652397260273972}, 'I': {' ': 0.020833333333333332, 'B': 0.010416666666666666, 'E': 0.0, 'G': 0.0, 'I': 0.8020833333333334, 'H': 0.041666666666666664, 'S': 0.07291666666666667, 'T': 0.052083333333333336}, 'H': {' ': 0.01848499331373316, 'B': 0.0003813827296382657, 'E': 0.0006372470925601402, 'G': 0.0029014053229442748, 'I': 9.655258978183943e-06, 'H': 0.9098102258847838, 'S': 0.010379403401547738, 'T': 0.057395686995814446}, 'S': {' ': 0.39081491454429856, 'B': 0.02558061258835409, 'E': 0.10101350087886607, 'G': 0.019746437787501403, 'I': 0.0, 'H': 0.05508807360035903, 'S': 0.34791877033546503, 'T': 0.059837690265155764}, 'T': {' ': 0.23972661623108665, 'B': 0.014099037138927097, 'E': 0.059791953232462176, 'G': 0.012207702888583218, 'I': 7.164144887666208e-05, 'H': 0.0412368179734067, 'S': 0.11870988078862907, 'T': 0.5141563502980284}}
我一直想弄清楚的是如何在以后的某个时间点读取文件并将其转换回相应的2D词典。有谁知道这样做的好方法?
答案 0 :(得分:1)
Python词典只不过是一个JSON数据结构。您可以使用json.dumps函数将字典转换为字符串并将其存储到文件中。稍后您可以使用json.loads函数将字符串转换回字典。
可以找到有关这些功能的更多信息here
答案 1 :(得分:0)
使用pickle
。
pickle模块实现了一个基本但强大的算法 序列化和反序列化Python对象结构。 “酸洗” 是将Python对象层次结构转换为a的过程 字节流和“unpickling”是反向操作,由此是一个字节 流被转换回对象层次结构
您可以使用字符串:
a = {'a':1, 'b':2}
# write it to string
serialized = pickle.dumps(a)
# read it from string
print pickle.loads(serialized)
直接或文件:
a = {'a':1, 'b':2}
# write it to file
with open('my_file.pickle', 'w') as f:
pickle.dump(a, f)
# read it from file
with open('my_file.pickle') as f:
print pickle.load(f)
pickle
优于其他序列化方法,如JSON,因为它针对Python结构进行了优化,默认情况下使用二进制协议。
仅供参考,cPickle
是一个更快的版本pickle
(基本上使用相同的API)如果您没有任何自定义类,您是否序列化/反序列化(您不会这样做) )。