使用python 3,我将莫尔斯代码列表分配给变量值:
values = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
我还有字符串格式的字母表,它被转换为列表并分配给键:
keys = list('abcdebghigklmnopqrstuvwxyz')
现在我使用zip()将两者结合在一起并将其分配给my_dict
my_dict =zip(keys,values)
如果我将my_dict转换为list:
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'和其他人似乎没事......
答案 0 :(得分:1)
你的字母表有2个b:
keys = list('abcdebghigklmnopqrstuvwxyz')
^ ^
--------------|---|
因此,在创建字典时,第二个映射将覆盖第一个字典。此外,您的字典将没有f
密钥。另请注意,您有2 g并且j
缺失。
相反,您可以使用string.ascii_lowercase
:
from string import ascii_lowercase
print(ascii_lowercase)
abcdefghijklmnopqrstuvwxyz