gpt4 book ai didi

Python:如何将键从函数的变量传递给字典?

转载 作者:行者123 更新时间:2023-12-05 09:22:21 25 4
gpt4 key购买 nike

基本上我有两个字典:一个是 Counter() 另一个是 dict()

第一个包含文本中所有唯一的单词作为键,每个单词在文本中的频率作为值

第二个包含与键相同的唯一词,但值是用户输入的定义。

后者是我在实现时遇到的困难。我创建了一个函数,它接受一个词,检查该词是否在频率词典中,如果是,则允许用户输入该词的定义(否则,它将打印错误)。然后将单词及其定义作为键值对添加到第二个词典中(使用 dict.update(word=definition))。

但是每当我运行程序时,我都会收到错误:

名称错误:名称''未定义

代码如下:

import string
import collections
import pickle

freq_dict = collections.Counter()
dfn_dict = dict()

def cleanedup(fh):
for line in fh:
word = ''
for character in line:
if character in string.ascii_letters:
word += character
else:
yield word
word = ''

def process_book(textname):
with open (textname) as doc:
freq_dict.update(cleanedup(doc))
global span_freq_dict
span_freq_dict = pickle.dumps(freq_dict)


def show_Nth_word(N):
global span_freq_dict
l = pickle.loads(span_freq_dict)
return l.most_common()[N]

def show_N_freq_words(N):
global span_freq_dict
l = pickle.loads(span_freq_dict)
return l.most_common(N)

def define_word(word):
if word in freq_dict:
definition = eval(input('Please define ' + str(word) + ':'))
dfn_dict({word: definition})
else:
return print('Word not in dictionary!')



process_book('DQ.txt')
process_book('HV.txt')

# This was to see if the if/else was working
define_word('asdfs')
#This is the actual word I want to add
define_word('de')

print(dfn_dict.items())

我感觉错误要么很小要么很大。任何帮助将不胜感激。

编辑:所以程序现在允许我输入一个定义,但是一旦我这样做就返回这个错误:

>>> 
Word not in dictionary!
Please define esperar:To await
Traceback (most recent call last):
File "C:\Users\User 3.1\Desktop\Code Projects\dict.py", line 50, in <module>
define_word('esperar')
File "C:\Users\User 3.1\Desktop\Code Projects\dict.py", line 37, in define_word
definition = eval(input('Please define ' + str(word) + ':'))
File "<string>", line 1
To await
^
SyntaxError: unexpected EOF while parsing
>>>

最佳答案

dict.update(word=definition) 不会按照您的想法去做。看这个例子:

>>> someDict = {}
>>> word = 'foo'
>>> definition = 'bar'
>>> someDict.update(word=definition)
>>> someDict
{'word': 'bar'}

如您所见,尽管您希望首先解析 word 变量,但此方法将始终更新关键字 word。但这不会起作用,因为您将一个命名参数传递给 update 函数,而这些命名参数是按字面意义获取的。

如果你想更新等于word值的键,你可以这样做:

someDict[word] = definition

关于Python:如何将键从函数的变量传递给字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27434094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com