我想知道如何在Python上混合list和dict?我知道在PHP上,我可以做这样的事情:
$options = array(
"option1",
"option2",
"option3" => array("meta1", "meta2", "meta3"),
"option4"
);
问题是python对于不同的列表有不同的括号。()表示元组,[]表示列表,{}表示dict。似乎没有任何方法可以将它们混合在一起,我不断地遇到语法错误。在
我现在使用的是python2.7。请建议如何正确地做这件事。在
非常感谢
鲁法斯
更新1:
我会稍微详细说明一下我想做什么。我试图在这里编写一个简单的python脚本来执行一些API请求:
http://www.diffbot.com/products/automatic/article/
相关部分是字段查询参数。它类似于…&fields=meta,querystring,images(url,caption)。所以上面的数组可以写成(在PHP中)
^{pr2}$$字段将传递给一个方法进行处理。结果将被返回,如下所示:
$json = diffbot->get("article", $url, $fields);
问题是-我用PHP编写它没有问题,但是当我尝试用Python编写它时,事情并不像看上去那么简单。。。在
你可以这样做:
但是
options
在本例中是一个字典。 如果您需要字典中的顺序,可以使用OrderedDict。在如何使用
^{2}$OrderedDict
?在输出:
在这里,您可以使用键(如}。在
option3
)或索引(如2
和3
)访问{免责声明。我必须强调,这个解决方案不是PHP和Python之间的一对一映射。PHP是另一种语言,具有其他数据结构/其他语义等,不能在Python和PHP的数据结构之间进行一对一的映射。请考虑一下hyperoreus的答案(我给了他+1)。它展示了在Python中混合列表和字典的另一种方法。也请阅读我们下面的讨论。在
更新1。
如何处理这些结构?在
您必须检查每种情况下的值类型。 {cd7>你可以加入列表(^); 否则你可以按原样使用它。在
在这里,我将结构转换为类似URL的字符串:
输出:
这似乎是在做同样的事情:
一般来说:
[]
表示列表,即有序集合:[1, 2, 3]
或{{}
表示集合,即唯一(哈希)元素的无序集合和字典,即唯一(哈希)键和值之间的映射:{1, 2, 3}
,{'a': 1, 'b': 2}
,{x: x ** 2 for x in [1, 2, 3]}
()
表示元组,即不可变的有序集合:(1, 2, 3)
()
也表示生成器:(x ** 2 for x in (1, 2, 3))
您可以随意混合它们(只要集合的元素和字典的键是散列的):
^{2}$我很确定我的问题有3个答案,虽然它得到了-1的投票,但它是最接近我想要的。现在很奇怪,当我想把那个作为“公认答案”的时候,它却不见了:
总而言之,删除的答案建议我这样做:
这很适合我处理清单上的每一项。我只需遍历所有值并检查其类型。如果它是一个字符串,请像平常一样处理它。但当它是一个dict/list时,它将被不同的处理。在
最终,我成功地做到了,我得到了我想要的。在
特别感谢Igor Chubin和Hyperboreus为我提供了测试和发现我一直在寻找的答案的建议和想法。非常感谢。在
谢谢你!在
鲁法斯
相关问题 更多 >
编程相关推荐