我有2个名单:
dict = [{ex1:a,ex2:c},{ex1:b,ex2:c},{ex1:a,ex2:d},{ex1:b,ex2:d}]
我想创建一个这样的字典列表:
{{1}}
我怎样才能以简单的方式做到这一点?
答案 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">×</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)
)
)
)