首页 > 解决方案 > 从使用 python 读取 JSON 文件中选择随机问候语

问题描述

我有一个看起来像这样的 JSON 文件,我必须对其进行随机化,以便每次输入时都会显示 json 文件中 3 的任何随机输出。

{
    "1":"Welcome",
    "2":"Hello",
    "3":"Hi"
}

我阅读了 JSON 文件

greeting_template1=readjson(input_file_path+'greeting_template1.json')

and to randomise

greeting_template1 = random.choice(greeting_template1)

但我收到错误:

   greeting_template1 = random.choice(greeting_template1)
  File "C:\Users\\AppData\Local\Continuum\anaconda3\envs\lib\random.py", line 262, in choice
    return seq[i]
KeyError: 2

请强调我哪里出错了

标签: jsonpython-3.x

解决方案


正如其他人指出的那样,您的 JSON 无效。有效的 json 文件将是:

{
    "1":"Welcome",
    "2":"Hello",
    "3":"Hi"
}

获得随机数的代码如下所示:

import json
import random

with open('greeting_template1.json') as json_file:
    data = json.load(json_file)

random_greeting = data[random.choice(list(data))]

您收到错误的原因是因为 random.choice() 需要一个序列作为参数。解析 json 会为您提供一个不是序列的 python 字典。


推荐阅读