Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python词典列表_Python_List_Dictionary - Fatal编程技术网

python词典列表

python词典列表,python,list,dictionary,Python,List,Dictionary,我有一个简单的代码,可以使用sqlalchemy从db中获取用户并将其作为json返回。我的问题是如何格式化输出以获得如下内容: {"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]} 我的代码输出了一个错误,作为python新手,我似乎无法修复该错误: d = [] for user in Users.query.all(): v = {} for columnName in Users.__

我有一个简单的代码,可以使用sqlalchemy从db中获取用户并将其作为json返回。我的问题是如何格式化输出以获得如下内容:

{"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]}
我的代码输出了一个错误,作为python新手,我似乎无法修复该错误:

d = []

for user in Users.query.all():
    v = {}
    for columnName in Users.__table__.columns.keys():
        v[columnName] = getattr( user, columnName )

    d.append( v )

return jsonify( d )
守则说:

ValueError: dictionary update sequence element #0 has length 11; 2 is required

谢谢。

错误创建dict时,您可能会遇到此错误-请参阅


编辑:查看senderle提供的确定根本原因的答案…

啊,既然您的代码已经粘贴,我可以看出根本问题确实来自
jsonify
。以下解决方法应令人满意

>>> import json
>>> json.dumps({"results": [{"id":1, "username":"john"},{"id":2,"username":"doe"}]})
'{"results": [{"username": "john", "id": 1}, {"username": "doe", "id": 2}]}'
jsonify
替换为
json.dumps
,如果这不能解决问题,请告诉我


但是如果您更喜欢使用
flask.jsonify
,那么您应该查看
flask
文档。
jsonify
的参数应该与any的参数相同,即dict或元组的iterable。这就是问题所在。

您正在使用
*args
调用
dict()
,这将把args扩展到位置参数。这是您看到的错误的典型原因。省去它。

我解决了这个错误,只需说

return jsonify( results = d )
而不是

return jsonify( d )

你在哪一行得到这个错误?你能粘贴整个stacktrace吗?这不是你出错的原因,但是如果你想拥有那个数据结构,你需要将返回行更改为:return jsonify({“results”:d})Full stack trace at:Full code at:另外,你正在使用一个应该是私有的属性(
\uu table\uu
),需要使用API和一些帮助程序来获取元数据。他在某处,或者正在使用他提供的一些参数进行调用。顺便说一句,simplejson允许您使用它,以便您可以使用更复杂的对象来扩展它。很好。这背后的原因是jsonify-in-flask不会在顶层对原始数组(方括号中)进行编码。我不知道确切的原因,但这被认为是不安全的。