내 프로그램이 내 사전의 목록에서 임의의 단어 하나만 인쇄하도록하고 싶지만 올바른 구문을 얻을 수없는 것 같습니다. 목록에서 임의의 값을 얻기 위해 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
random 모듈 을 사용하고 싶을 수 있습니다 .
예:
import random
>>> l = list(range(10))
>>> random.choice(l)
5
>>> random.choice(l)
9
귀하의 경우 다음을 수행 할 수 있습니다.
print (" ".join(random.choice(thesaurus[x]) if x in thesaurus else x for x in part2))
예:
>>> import random
>>> phrase = "I am feeling sad that he left, but that's okay because I'm happy he will be back soon"
>>>
>>> thesaurus = { "happy":["glad", "blissful", "ecstatic", "at ease"],
... "sad" :["bleak", "blue", "depressed"]
... }
>>> print (" ".join(random.choice(thesaurus[x]) if x in thesaurus else x for x in phrase.split()))
I am feeling bleak that he left, but that's okay because I'm blissful he will be back soon
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다