使用 python 3,我将字符串的摩尔斯电码列表分配给变量值:
values = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
我还有字符串格式的字母表,它被转换为列表并分配给键:
keys = list('abcdebghigklmnopqrstuvwxyz')
现在我正在使用 zip(( 将两者组合在一起并将其分配给my_dict
my_dict =zip(keys,values)
如果我my_dict转换为列表:
my_dict = list (my_dict)
print (my_dict)
我得到这个输出:
[('a', '.-'), **('b', '-...'),** ('c', '-.-.'), ('d', '-..'), ('e', '.'), ('b', '..-.'), ('g', '--.'), ('h', '....'), ('i', '..'), ('g', '.---'), ('k', '-.-'), ('l', '.-..'), ('m', '--'), ('n', '-.'), ('o', '---'), ('p', '.--.'), ('q', '--.-'), ('r', '.-.'), ('s', '...'), ('t', '-'), ('u', '..-'), ('v', '...-'), ('w', '.--'), ('x', '-..-'), ('y', '-.--'), ('z', '--..')]
这就是我所期望的,每个索引都是前两个列表的组合。
但是,当我my_dict
转换为字典并打印时:
my_dict = dict(my_dict)
print (my_dict)
我得到这个输出(抱歉似乎无法正确发布(:
{'y': '-.--', 'c': '-.-.', 'o': '---', 'r': '.-.', 'a': '.-', 't': '-', 'g': '.---', 'v': '...-', 'z': '--..', 'e': '.', 'w': '.--', 'n': '-.', 'i': '..', 'l': '.-..', 'h': '....', 'q': '--.-', 'm': '--', 's': '...', 'p': '.--.', 'x': '-..-', 'k': '-.-', 'u': '..-', 'd': '-..', **'b': '..-.'**}
我的问题是...我知道字典是无序的。但是为什么"b"的值不同: 第一个输出打印这个('b'、'-...'(,这是正确的,我明白 第二个输出打印此"b":"..-'这毫无意义。
">a"c"d"和其他人似乎很好....
你的字母表有 2 个 b:
keys = list('abcdebghigklmnopqrstuvwxyz')
^ ^
--------------|---|
因此,当您创建字典时,第二个映射将覆盖第一个映射。此外,您的字典将没有f
键。另请注意,您缺少 2 克和j
。
相反,您可以使用string.ascii_lowercase
:
from string import ascii_lowercase
print(ascii_lowercase)
abcdefghijklmnopqrstuvwxyz