python-从输入文件创建二维字典

时间:2015-03-01 04:02:47

标签: python arrays dictionary

我是一个蟒蛇新手。我有一个像这样的输入文件:

1 2 3 4 /a/
5 6 7 8 /b/
9 0 1 2 /c/
3 4 5 6 /d/

我需要读取文件并将数字存储在字典中,例如d,但是使用最后一列中的单词作为索引。比如我想

d['aa'] = 1, 
d['ab'] = 2, 
d['ac'] = 3 , 
d['ad'] = 4 
...

2 个答案:

答案 0 :(得分:3)

这不是字典的工作方式。字典基本上是一个哈希表。钥匙就像一套;因为不允许重复的条目。我认为你要做的是:

data = """1 2 3 4 /a/
5 6 7 8 /b/
9 0 1 2 /c/
3 4 5 6 /d/"""

result = {}
for line in data.split("\n"):
    *numbers, index = line.split(" ")
    index = index.replace("/", "")
    result[index] = numbers
print(result)

字典索引未订购。如果您想保留订单,您也可以随时存储:

indexes_ordered = []
...
indexes_ordered.append(index)

或查看this question以发现排序。

最后,要获取您的值,您可以遍历键:

for key in result:
    print(result[key])

或者,根据您的选择,将result更改为indexes_ordered。您可以通过任何众多的列表理解形式为每个字典条目的有序列表执行操作。

对于奖励积分,您可以让词典条目指向其他词典条目:

x = {}
x[0] = 1
x[1] = 2
x[2] = 3
x[3] = "yay!"
result = 0
y = 0
while y in x: y = x[y]
result = y
print(result)

要获得您在编辑过的问题中描述的内容,您可以执行以下操作:

another_result = {}
a = ord('a')
for key in result:
    x = result[key]
    for n in range(len(x)):
        another_result[key + chr(a+n)] = x[n]
for key in another_result: print(key, another_result[key])

如果您有任何问题,请发表评论。

答案 1 :(得分:0)

以下是解决方案:

d={};k=0;key=[];val=""
tFile=open("inputFile",'r')
dat=tFile.readlines()
for i in range(len(dat)):
    val += a[i].split('/')[0] # store all the numbers in val
    key.append(a[i].split('/')[1].strip()) # store letters in key
val = " ".join(val.split()) # remove extra white spaces
#merge keys and values into a single dictionary
for i in key:
    for j in key:
        d[i+j]=val.split(" ")[k].strip()
        k+=1
return d