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
我最初的解决方案是不正确的,还是这是一些恼人的格式问题,以及如何解决它?在
page you linked to确切地说明了如何做到这一点:
他们给了你一个字符串(
jsonSalaries
)。使用json.loads
将其转换为字典。在你最后一个问题是个新问题,但是。。。当您打印这样的字典时,您只是在使用这样一个事实:python非常好,能够以有意义的方式显示其变量的内容。要以您自己的格式打印字典,您需要遍历键并打印键和值:
您的代码中还有其他问题。。。。在
在addemployee函数中加载JSON是很奇怪的。那应该是分开的。。。在
另外,在您的}的相同值,而不是使用传入的}变量,因此该行应该是:
^{pr2}$add_employee()
函数中,您总是硬连接添加Me
和{name
和{使用这个:
在返回jsonSalaries之前添加以下内容:
^{pr2}$相关问题 更多 >
编程相关推荐