0

我想在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
4

3 回答 3

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
于 2013-07-15T05:11:48.760 回答
1

next()

next(k for k, v in d.iteritems() if v == a)

next()将返回第一个产生的结果。

于 2013-07-15T05:12:00.823 回答
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 相同。

于 2013-07-15T05:12:12.780 回答