Python 嵌套字典推导式

3 投票
4 回答
3447 浏览
提问于 2025-04-16 09:39

有人能解释一下怎么做嵌套的字典推导式吗?

>> j = dict(((x+y,0) for x in 'cd') for y in 'ab')
>> {('ca', 0): ('da', 0), ('cb', 0): ('db', 0)}

我希望能这样做:

>> j
>> {'ca':0, 'cb':0, 'da':0, 'db':0}

谢谢!

4 个回答

1
dict((x+2*y, 0) for x in range(1,4,2) for y in range(15, 18, 2))

顺便说一下,我们所说的字典推导式,其实就是下面这样的东西,这个特性只在Python 2.7及以上版本中可用:

{x+2*y:0 for x in range(1,4,2) for y in range(15, 18, 2)}
4

你可以通过使用itertools里的笛卡尔积,把这个简化成一个循环。

>>> from itertools import product
>>> j=dict((x+y,0) for x,y in product('cd','ab'))
>>> j
{'cb': 0, 'ca': 0, 'db': 0, 'da': 0}
>>> 
8

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序做一些特定的事情,比如在某个条件满足时才执行某段代码。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会按照我们的要求去运行。

比如说,如果你想让程序在用户输入的数字大于10时,才显示“数字太大了”,你就需要用到条件判断。这种判断就像是在问:“这个数字大吗?”如果答案是“是”,那么程序就会执行显示信息的操作;如果答案是“不是”,程序就会跳过这一步。

这样做的好处是,程序可以根据不同的情况做出不同的反应,让它更加灵活和智能。

希望这个解释能帮助你理解条件判断的基本概念!

dict((x+y,0) for x in 'cd' for y in 'ab')

撰写回答