回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想要一个python中的三维散列-一本字典的一本字典的一本字典的一本字典。我不知道这是否可能,我有一些问题我不明白,使我怀疑这是不可能的。下面的代码示例读取两个逗号分隔的文件('电视.txt'和'胶片.txt,并将数据放在dictionary of dictionary(dOfDofD)上。这两个文件如下所示:</p>
<p><strong>电视.txt</strong></p>
<pre><code>Muppets,female,Miss Piggy
Muppets,male,Kermit
Simpsons,female,Marge
Simpsons,male,Homer
</code></pre>
<p><strong>胶片.txt</strong></p>
<pre><code>Gone with the Wind,female,Vivien Leigh
Gone with the Wind,male,Clark Gable
Anthony and Cleopatra,female,Elizabeth Taylor
Anthony and Cleopatra,male,Richard Burton
</code></pre>
<p>我的代码读取这两个文件并创建dOfDofD,但是在检索数据时,似乎系统性地缺少了一些数据:只有最后一个字典级别的示例存在。代码是:</p>
<pre><code>#!/usr/bin/env python
import string
dOfDofD = {}
mediaList = ['tv', 'film']
showSet = set()
for media in mediaList:
fName = media + ".txt"
f = open(fName, 'r')
for line in f:
line = line.rstrip('\n')
dataList = string.splitfields(line, ',')
show = dataList[0]
showSet.add(show)
gender = dataList[1]
name = dataList[2]
dOfDofD[show] = {}
dOfDofD[show][media] = {}
dOfDofD[show][media][gender] = name
f.close()
for show in showSet:
for media in dOfDofD[show]:
for gender in dOfDofD[show][media]:
print "show: %s. media: %s. gender: %s. character: %s." % \
(show, media, gender, dOfDofD[show][media][gender])
</code></pre>
<p>这只会打印出男性字符,就好像女性字符被覆盖一样(首先设置)。你知道吗</p>
<pre><code>show: Simpsons. media: tv. gender: male. character: Homer.
show: Gone with the Wind. media: film. gender: male. character: Clark Gable.
show: Muppets. media: tv. gender: male. character: Kermit.
show: Anthony and Cleopatra. media: film. gender: male. character: Richard Burton.
</code></pre>
<p>我在ubuntu14.04上运行python2.7.6。你知道吗</p>
<p>知道我做错了什么吗?你知道吗</p>