卡住了learnpython.org网站使用JSON练习

2024-09-27 23:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

http://www.learnpython.org/Serialization_using_JSON_and_pickle

以下是说明:

这个练习的目的是打印出带有键值对“Me”的JSON字符串:其中添加了800。在

下面是我们应该修改的起始代码。在

#Exercise fix this function, so it adds the given name and salary pair to the json it returns
def add_employee(jsonSalaries, name, salary): 
    # Add your code here

    return jsonSalaries 

#Test code - shouldn't need to be modified
originalJsonSalaries = '{"Alfred" : 300, "Jane" : 301 }'
newJsonSalaries = add_employee(originalJsonSalaries, "Me", 800)
print(newJsonSalaries)

我完全迷路了。JSON的教训充其量也很简短。我在这里遇到的问题是,orginalJsonSalaries被定义为一个字符串(包含各种不必要的符号,如方括号)。事实上,我认为如果去掉围绕其定义的单引号,originalJsonSalaries将是一本字典,这将更加容易。但就目前的情况而言,如何将"Me"800附加到字符串中,并且仍然保持类似字典的格式?在

是的,我对编码非常陌生。我唯一知道的另一种语言是tcl。在

编辑:

好吧,多亏了这些答案,我发现自己是个笨蛋,于是我写了这段代码:

^{pr2}$

这不起作用。不管出于什么原因,原始字典键的格式都是unicode(我不知道在哪里发生的),所以当我打印字典时,会显示“u”标志:

{u'Jane': 301, 'Me': 800, u'Alfred': 300}

我尝试过使用dict.pop()来替换密钥(dict("Jane") = dict.pop(u"Jane")),但这只会带来SyntaxError: can't assign to function call

我最初的解决方案是不正确的,还是这是一些恼人的格式问题,以及如何解决它?在


Tags: andtheto字符串代码namejson字典
3条回答

page you linked to确切地说明了如何做到这一点:

In order to use the json module, it must first be imported:

import json

[...]

To load JSON back to a data structure, use the "loads" method. This method takes a string and turns it back into the json object datastructure:

print json.loads(json_string)

他们给了你一个字符串(jsonSalaries)。使用json.loads将其转换为字典。在

你最后一个问题是个新问题,但是。。。当您打印这样的字典时,您只是在使用这样一个事实:python非常好,能够以有意义的方式显示其变量的内容。要以您自己的格式打印字典,您需要遍历键并打印键和值:

for k in newJsonSalaries:
    print("Employee {0} makes {1}".format(k, newJsonSalaries[k]))

您的代码中还有其他问题。。。。在

在addemployee函数中加载JSON是很奇怪的。那应该是分开的。。。在

另外,在您的add_employee()函数中,您总是硬连接添加Me和{}的相同值,而不是使用传入的name和{}变量,因此该行应该是:

^{pr2}$

使用这个:

import json
def add_employee(jsonSalaries, name, salary):
    # Add your code here
    jsonSalaries = json.loads(jsonSalaries)
    jsonSalaries[name] = salary
    jsonSalaries = json.dumps(jsonSalaries)
    return jsonSalaries

#Test code - shouldn't need to be modified
originalJsonSalaries = '{"Alfred" : 300, "Jane" : 301 }'
newJsonSalaries = add_employee(originalJsonSalaries, "Me", 800)
print(newJsonSalaries)

在返回jsonSalaries之前添加以下内容:

^{pr2}$

相关问题 更多 >

    热门问题