代码之家  ›  专栏  ›  技术社区  ›  ccpizza

从一个范围生成python字典理解

  •  0
  • ccpizza  · 技术社区  · 6 年前

    python字典的理解是否可以从一个范围生成,即给定一个 range(42) 我想买些像

    {
        "key0": "value0",
        "key1": "value1",
        ....
        "key41", "value41"
    }
    

    我知道可以通过列表理解间接完成,例如:

    dict(("key" + str(i), "value" + str(i)) for i in range(42))
    

    字典的理解是否允许类似的结构?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Sheldore    6 年前

    你很亲密。一种方法是使用下面的“词典理解”。把它扩展到 range(42) . 你不需要使用关键字 dict 明确列在清单上的理解。这个 { } 为你做的。 This pep 网页提供了更多关于词典理解的解释。

    ans = {"key" + str(i): "value" + str(i) for i in range(10)}
    # {'key0': 'value0',
    #  'key1': 'value1',
    #  'key2': 'value2',
    #  'key3': 'value3',
    #  'key4': 'value4',
    #  'key5': 'value5',
    #  'key6': 'value6',
    #  'key7': 'value7',
    #  'key8': 'value8',
    #  'key9': 'value9'}
    
        2
  •  1
  •   sahasrara62    6 年前
    sol = {'key{}'.format(i):'value{}'.format(i) for i in range(42)}
    print(sol)
    
    
    {'key0': 'value0', 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4', 'key5': 'value5', 'key6': 'value6', 'key7': 'value7', 'key8': 'value8', 'key9': 'value9', 'key10': 'value10', 'key11': 'value11', 'key12': 'value12', 'key13': 'value13', 'key14': 'value14', 'key15': 'value15', 'key16': 'value16', 'key17': 'value17', 'key18': 'value18', 'key19': 'value19', 'key20': 'value20', 'key21': 'value21', 'key22': 'value22', 'key23': 'value23', 'key24': 'value24', 'key25': 'value25', 'key26': 'value26', 'key27': 'value27', 'key28': 'value28', 'key29': 'value29', 'key30': 'value30', 'key31': 'value31', 'key32': 'value32', 'key33': 'value33', 'key34': 'value34', 'key35': 'value35', 'key36': 'value36', 'key37': 'value37', 'key38': 'value38', 'key39': 'value39', 'key40': 'value40', 'key41': 'value41'}
    
        3
  •  1
  •   Işık Kaplan    6 年前

    使用>python3.5,使用f字符串

    >>> {f"key{i}": f"value{i}" for i in range(5)}
    {'key0': 'value0', 'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
    >>>