5

私はPythonの辞書理解を学ぼうとしており、次の関数が行うことを1行で実行できると思います。n+1最初の as を作成することも、2 番目の as の使用を避けることもできませんでしたrange()

のように、理解中に自動的にインクリメントするカウンターを使用することは可能test1()ですか?

def test1():
    l = ['a', 'b', 'c', 'd']
    d = {}
    n = 1
    for i in l:
        d[i] = n
        n = n + 1
    return d

def test2():
    l = ['a', 'b', 'c', 'd']
    d = {}
    for n in range(len(l)):
        d[l[n]] = n + 1
    return d
4

2 に答える 2

1

これは機能します

>>> l = ['a', 'b', 'c', 'd']
>>> { x:(y+1) for (x,y) in zip(l, range(len(l))) }
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
于 2013-07-07T16:23:48.117 に答える