我正在尝试制作ADFGVX密码 . 在这个过程中,我需要将替换表转换为字典 .
例如,
<Substitution table>
A D F G V X
A T J B 1 5 V
D 7 4 9 M G K
F Y N 3 Z 8 F
G X D L A U E
V R 6 2 H S O
X C P Q I 0 W
成
{'AA' : 'T', 'AD': 'J', 'AF' : 'B', 'AG' : '1' ...... 'XX' = 'W'}
有人知道吗?
然而,我之前完全不知道,感谢我写的第一条评论(下文) . 该表是.txt格式,您可以看到它在第一行和第一列上有 Headers . 但我不知道如何删除这些并正确匹配键和值 .
f = open(tablefile_location, 'r')
subs_table = list()
while True:
line = f.readline()[1:]
subs_table.append(line.rstrip().split('\t'))
if not line: break
print(subs_table)
subs_dict = { R+C: subs_table[x][y] for x, R in enumerate(['A', 'D', 'F', 'G', 'V', 'X']) for y, C in enumerate(['A', 'D', 'F', 'G', 'V', 'X']) }
print(subs_dict)
f.close()
1 回答
这将根据
<Substitution table>
中数据的访问方式而有所不同 .一个可能使收集字典更容易的想法是使用comprehensions . 例如:
{ R+C: table[x][y] for x, R in enumerate(['A','B','C']) for y, C in enumerate(['a', 'b']) }
会给你这个词:
{'Aa': t[0][0], 'Ab': t[0][1], 'Ba': t[1][0], 'Bb': t[1][1], 'Ca': t[2][0], 'Cb': t[2][1]}
.R+C: table[x][y]
部分创建key: value
对 - 您可以更改它们以提取数据,但需要表 . 每个循环中每个元素循环一次(for x in X
为每个for y in Y
) .enumerate
调用用于给出循环索引以及值(for index, value in enumerate(Values)
) .