将两个列表格式化为单个字典

时间:2017-11-09 01:50:26

标签: python python-3.x

我正在为我的计算机科学课编写一个刽子手游戏,我正在尝试创建一个字典,其中包含给定单词的每个字符,以及0表示是否已被猜到。

gamestart = 0
guesses = 5
gamewin = 0
while gamestart == 0:
    word = input("Welcome to hangman!" + "\nEnter a word: ")
    if word.find(" ") > -1:
       print("\nSorry Please use one word only!\n")
    elif word.find(" ") == -1:
        gamestart = 1
for i in range(len(word)):
    wordspacing = [0] * i
wordstore = list(word)
wordstore = dict(zip(wordspacing, wordstore))
print(wordstore)

然而,当我尝试将两个列表放在一起时,我得到了输出:

Welcome to hangman!
Enter a word: word
{0: 'r'}

有人可以确定发生这种情况的原因。我还想在效率方面受到一些批评。

2 个答案:

答案 0 :(得分:1)

问题是你正在为字母制作0字典,每个字只能有一个值。

尝试使用词典理解

wordstore = {letter: 0 for letter in word}

答案 1 :(得分:1)

要使用您的方法获得所需的输出,您需要切换压缩对象的顺序

wordstore = dict(zip(wordstore, wordspacing))

同样对于字面间距,您不希望不断为wordspacing分配值,而且由于i的最后一个值为3,因此最终只能使用[0,0,0]代替[0,0,0,0]而不是4.所以请使用以下

wordspacing = [0] * len(word)