在python中组合2个列表

时间:2017-02-15 23:15:10

标签: python list dictionary

我有2个名单:

dict = [{ex1:a,ex2:c},{ex1:b,ex2:c},{ex1:a,ex2:d},{ex1:b,ex2:d}]

我想创建一个这样的字典列表:

{{1}}

我怎样才能以简单的方式做到这一点?

2 个答案:

答案 0 :(得分:3)

以下是使用列表理解进行此操作的一种方法:

<?php

$sql = "select id, image from items order by id desc";
$result = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($result)){
$image = $row['image'];
$id = $row['id'];
?>

    <div id="modal01" class="w3-modal" onclick="this.style.display='none'">
<span class="w3-closebtn w3-hover-red w3-text-white w3-xxlarge w3-container  w3-display-topright">&times;</span>
<div class="w3-modal-content w3-animate-zoom">
<img id="img01" style="width:100%">
</div>
</div>

<div class="img">
<img src="items/<?php echo $image; ?>" style="width:179px; height:  135px;cursor:pointer" 
onclick="onClick(this)">
<a href="view_product.php?id=<?php echo $id; ?>">Visa information</a>
</div>

<?php
}

?>

<script>
function onClick(element) {
document.getElementById("img01").src = element.src;
document.getElementById("modal01").style.display = "block";
}
</script>

如果列表项是字符串,您将获得:

lst = [{'ex1': j, 'ex2': i} for i in y for j in x]

答案 1 :(得分:-1)

有一个名为itertools的软件包,它提供了许多方法来简化这类工作。我假设您可能不仅有一个列表,但最终还有更多,因此您可以将它们放在另一个列表my_lists中,获取他们的产品,其余部分只是将其设为dict所需格式,即使用ex1等键。

修改

这与列表理解相同:

[dict(('ex%u' % (i[0] + 1), i[1]) for i in enumerate(co))
    for co in itertools.product(*my_lists)]

和地图一样:

import itertools

x = ['a', 'b']
y = ['c', 'd']
my_lists = [x, y]

list_of_dicts = (
    list(
        map(
            lambda co:
                dict(
                    map(
                        lambda i:
                            ('ex%u' % (i[0] + 1), i[1]),
                        enumerate(co)
                    )
                ),
            itertools.product(*my_lists)
        )
    )
)