从Python发布多维数组


POSTing a multidimensional array from Python

我正在尝试将数组POST到RESTful PHP API。其思想是允许(n>0)条记录,每条记录都包含一个remote_id、一个dimension_id和一个度量。

这是我的客户端Python:

    data = urllib.urlencode([
             ("remote_id", 1),
             ("dimension_id", 1),
             ("metric",metric1),
             ("remote_id", 1),
             ("dimension_id", 2),
             ("metric",metric2)
            ])
    response = urllib2.urlopen(url=url, data=data)

这是我的服务器端PHP

<?php
print_r($_POST);
?>

不出所料,这将返回:

Array
(
    [remote_id] => 1
    [dimension_id] => 2
    [metric] => 16
)

在我看来,我正在用最终值覆盖remote_id、dimension_id和metric的每个实例,这并不奇怪,因为它们都用相同的名称键控。

做这件事的正确方法是什么?我可以看到一个带有唯一键(1_remote_id,1_dimension_id,1-metric+2_remote_id,2_dimension_id,2_metric)的糟糕方法,但它的扩展性不太好。

我想我是在追求这样的PHP,但在Python中:

<?php
$observations = array();
$observations[] = [
    "remote_id" => "a1",
    "metric_id" => "foo",
    "metric" => 1
];
$observations[] = [
    "remote_id" => "a1",
    "metric_id" => "bar",
    "metric" => 2
];
?>

感谢任何提示!

Sam

不要引用我的话(我已经很久没有做过任何PHP了),但这可能只是有效的:

data = urllib.urlencode([
           ("remote_id[]", 1),
           ("dimension_id[]", 1),
           ("metric[]",metric1),
           ("remote_id[]", 1),
           ("dimension_id[]", 2),
           ("metric[]",metric2)
        ])

无论如何我都会试一试。