首页 文章

如何使用python将表转换为字典? [等候接听]

提问于
浏览
-3

我正在尝试制作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 回答

  • 0

    这将根据 <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) ) .

相关问题