从 POSTed 数组访问非顺序列表项

Accessing non-sequential list items from a POSTed array

我有一个 Python WebApp 接受 POSTed AJAX 数组。我可以很好地访问数组:

print self.request.POST.items()

#(new lines in response for readability)

[(u'verb', u'create'), 
(u'my_id', u'18'), 
(u'properties[1]', u'1000'), 
(u'properties[3]', u'2000')]

重要的是,所提供的属性 a) 数量未知,b) 并不总是连续的。

目前我用这个收集它们:

i = 0
while i <= 50:
  current_key = 'properties['+str(i)+']'
  if self.request.get(current_key) != "":
    self.response.out.write(self.request.get(current_key))
  i = i + 1

但是我在做的时候对自己感到恶心(而且大多数时候只有不到 50 个属性,并且有一天可能会更多...我不确定是否会更草率, 少 Pythonic 解决方案).

关于我在这里遗漏的任何提示?如果我尝试直接访问 'properties' (计划是迭代它或其他东西)它是未设置的,这让我觉得我只是在查看一组名为 'properties[1]' 和 [=27 的断开连接的字符串=] 实际上根本不是数组/列表/字典。

如果这是一个更简洁的修复,我确实可以访问另一端的 js - 目前它是这样的:

var properties = {1:1000, 2:2000, 4:3000};
$.post( "/api", { verb: 'create', my_id: my_id, properties: properties })

发送数据为JSON。然后你可以直接反序列化为字典,不需要任何处理。

$.post( "/api", { verb: 'create', my_id: my_id, properties: JSON.stringify(properties) })

...

properties = json.loads(self.request.get('properties', {}))