【问题标题】:Is there a way to return a dictionary value without quotations?有没有办法在没有引号的情况下返回字典值?
【发布时间】:2017-01-27 21:00:15
【问题描述】:

很抱歉,如果这是在某个地方,但我找不到我正在寻找的解决方案。我想在没有引号的情况下返回我的字典的值,并且无法弄清楚我做错了什么。

def read_wiktionary():
 answer = dict()
 f = open('wiktionary.txt', 'r')
 for line in f:
      word,value = line.rstrip('\n').split(' ')
      answer[word] = (value)
 return answer

【问题讨论】:

  • 你能举例说明你的预期输出吗?不加引号就很难确定你的意思。
  • 当你打印一个字符串值时,它通常用引号来表示它是一个字符串。字符串的实际值不包含这些引号。你能澄清一下你需要answer 什么以及什么不起作用吗?
  • >>> freq = read_wiktionary() >>> freq['the'] 56271872.0 >>> freq['my'] 3277699.0
  • 它应该像上面的输出一样输出,我得到了相同的输出,但带有引号。
  • 正确的卡琳,但我正在尝试返回一个字典值。我认为它不会作为字符串返回。

标签: python dictionary return


【解决方案1】:

当您读取文件时,所有内容都作为字符串读取。要获得浮点值,您需要将其转换为浮点数。

def read_wiktionary():
    answer = dict()
    f = open('wiktionary.txt', 'r')
    for line in f:
        word, value = line.rstrip('\n').split(' ')
        answer[word] = float(value)
    return answer

顺便说一句,使用with 打开文件通常是一种很好的做法,这样它会在退出块时自动关闭。来自the docs

处理文件时最好使用 with 关键字 对象。这样做的好处是文件在之后正确关闭 它的套件完成了,即使在途中引发了异常。

所以,我建议:

def read_wiktionary():
    answer = {}
    with open('wiktionary.txt', 'r') as f:
        for line in f:
            word, value = line.rstrip('\n').split(' ')
            answer[word] = float(value)
    return answer

【讨论】:

    【解决方案2】:

    引号仅用作不同键和值之间的分隔符,因此无法删除。引号不会影响您在字典中的值。

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多