列表json中的print元素

时间:2016-06-06 10:03:26

标签: python json list printing

我有一个列表来自txt文件的加载,该文件使用JSON格式化,程序打印出我想要的元素(通过索引,从用户请求),尽管它以不需要的格式打印列表

elif choice == 'v':
    # View a joke.
    # See Point 6 of the "Requirements of admin.py" section of the assignment brief.
    jokeIndex = input('Joke number to view: ')
    index = int(jokeIndex)
    file = open('data.txt', 'r')
    data = json.load(file)
    print(data[index])

    file.close();
    pass

它按字面打印它是如何在txt文件中编写的,而不仅仅是实际的元素

Choose [a]dd, [l]ist, [s]earch, [v]iew, [d]elete or [q]uit.  
v
Joke number to view: 1   
{'setup': 'whats brown and sticky', 'punchline': 'a stick'}

虽然我希望输出类似这样的东西

Q:whats brown and sticky?  A: a stick

3 个答案:

答案 0 :(得分:4)

而不是

print(data[index])

你应该这样做:

print('Q: {setup}? A: {punchline}'.format(**data[index])

原因是因为它是一本字典,您可以通过键访问它 我放**data[index]的方式称为字典扩展 它会根据可用的密钥自动格式化字符串。

您可以使用以下示例代码查看字典中的键和值:

print(data[index].keys())
print(data[index].values())

您还可以使用以下内容返回键:值对:

for key, value in data[index].items():
    print(key, value)

答案 1 :(得分:2)

您需要格式化输出

elif choice == 'v':

jokeIndex = input('Joke number to view: ')
index = int(jokeIndex)
file = open('data.txt', 'r')
data = json.load(file)
print('Q: ' + data[index]['setup'])
print('A: ' + data[index]['punchline'])

file.close();
pass

答案 2 :(得分:0)

f = "Q:{}? A: {}"
row = data[index]
f1 = f.format(row.get('setup'), row['punchline'])
print f1