4

たとえば、次のようなコードを作成しようとしています。

{1:7,2:8,3:9,4:10}

{i:j for i in range(1,5) for j in range(7,11)}

生産する

{1: 10, 2: 10, 3: 10, 4: 10}

どうすれば修正できますか?

ありがとう

4

4 に答える 4

6

使用zip:

>>> dict(zip(range(1,5), range(7,11)))
{1: 7, 2: 8, 3: 9, 4: 10}

辞書内包表記の使用:

>>> {k:v for k, v in zip(range(1,5), range(7,11))}
{1: 7, 2: 8, 3: 9, 4: 10}

>>> {x:x+6 for x in range(1,5)}
{1: 7, 2: 8, 3: 9, 4: 10}

コードが機能しない理由:

コードは次のコードに似ています。

ret = {}
for i in range(1,5):
    for j in range(7,11):
        ret[i] = j
    # ret[i] = 10 is executed at last for every `i`.
于 2013-09-13T14:51:25.807 に答える
3
{i: j for i, j in zip(range(1, 5), range(7, 11))}
于 2013-09-13T14:52:25.493 に答える
2

zip(またはitertools.izip) とを使用itertools.count:

>>> from itertools import count, izip

口述理解:

>>> {k:v for k,v in izip(xrange(1,5), count(7))}
{1: 7, 2: 8, 3: 9, 4: 10}

dict():

>>> dict(izip(xrange(1,5), count(7)))
{1: 7, 2: 8, 3: 9, 4: 10}
于 2013-09-13T14:52:40.500 に答える