我想在 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
答案 0 :(得分:2)
您不需要范围。
>>> 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
答案 1 :(得分:1)
使用next()
:
next(k for k, v in d.iteritems() if v == a)
next()
将返回第一个结果。
答案 2 :(得分:1)
遍历这些项目:
>>> 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相同。