【发布时间】:2016-09-03 14:27:06
【问题描述】:
我希望我的程序只打印字典中列表中的一个随机单词,但我似乎无法获得正确的语法来执行此操作。我尝试使用 popitem() 从列表中获取随机值,但它似乎不起作用。这是我的代码:
import random
thesaurus = {
"happy":["glad", "blissful", "ecstatic", "at ease"],
"sad" :["bleak", "blue", "depressed"]
}
# input
phrase = input("Enter a phrase: ")
# turn input into list
part1 = phrase.split()
part2 = list(part1)
newlist = []
for x in part2:
s = thesaurus.get(x, x)
newlist.append(s)
print (newlist)
例如,如果输入是
i am happy
预期的输出是
i am glad
或字典中列表中的任何随机单词。
但是,现在我的输出看起来像这样:
['i', 'am', ['glad', 'blissful', 'ecstatic', 'at ease']]
我知道这涉及到另一个线程,但它似乎没有解决这个特定问题。
任何帮助将不胜感激!
编辑:
如果我扩展此公式以处理包含一长串单词的导入文件,我将如何更改代码?
newDict = {}
with open('thesaurus.txt', 'r') as f:
for line in f:
splitLine = line.split()
newDict[(splitLine[0])] = ",".join(splitLine[1:])
print ("Total words in thesaurus: ", len(newDict))
# input
phrase = input("Enter a phrase: ")
# turn input into list
part1 = phrase.split()
part2 = list(part1)
# testing input
newlist = []
for x in part2:
s = newDict[x].pop() if x in newDict else x
s = random.choice(newDict[x]).upper() if x in newDict else x
newlist.append(s)
newphrase = ' '.join(newlist)
print (newphrase)
“同义词库”文件中的行文本示例:
abash,humility,fear
【问题讨论】:
-
thesaurus.get(x, x)是什么意思? -
@Arman 第二个
x是默认值。该语句本质上的意思是“获取与键x关联的值,或者如果没有找到值则返回x”
标签: list python-3.x dictionary random