我想在d中搜索a,下面的代码块返回正确的结果,即 3。但是,如何将下面的代码写入生成器表达式?
a = [4, 6]
d= {0: [0, 4], 1: [3, 6], 2: [4, 0], 3: [4, 6], 4: [6, 3], 5: [6, 4]}
for i in range(0, len(d)):
if d.get(i) == a:
print i
我想在d中搜索a,下面的代码块返回正确的结果,即 3。但是,如何将下面的代码写入生成器表达式?
a = [4, 6]
d= {0: [0, 4], 1: [3, 6], 2: [4, 0], 3: [4, 6], 4: [6, 3], 5: [6, 4]}
for i in range(0, len(d)):
if d.get(i) == a:
print i
你不需要范围。
>>> a = [4, 6]
>>> d = {0: [0, 4], 1: [3, 6], 2: [4, 0], 3: [4, 6], 4: [6, 3], 5: [6, 4]}
>>> [i for i in d if d[i] == a]
[3]
>>> (i for i in d if d[i] == a)
<generator object <genexpr> at 0x7f14d9629690>
>>> next(_)
3
与next()
:
next(k for k, v in d.iteritems() if v == a)
next()
将返回第一个产生的结果。
遍历项目:
>>> a = [4, 6]
>>> for k, v in d.iteritems():
... if v == a:
... print k
...
3
d.iteritems()
返回字典中每个项目的生成器及其键和值:
>>> list(d.iteritems())
[(0, [0, 4]), (1, [3, 6]), (2, [4, 0]), (3, [4, 6]), (4, [6, 3]), (5, [6, 4])]
如果您使用的是 python 3,items()
则与 iteritems 相同。