2017-01-26 6 views
2

私はキーとして1つの辞書からキーを取得し、値としてrange()から数値を取得する辞書を作成しようとしています。たとえば、これが私が試したことです。ディクテーションの範囲と

files = {'/var/www/test.jgp': 40kb, '/var/www/banner.jgp':40kb} 
files_num = dict((key, value) for key in files.keys() for value in range(1, len(files) + 1)) 

これは機能しませんでした。私はfiles.keys()とrange(1、len(files)+ 1)のリストを作成し、zipのようなものを使用すれば、これを行うことができます。しかし、dictの理解を使用してより洗練されたソリューションがあるかどうか疑問に思っていました。

私はこのようなものにするために出力を探しています:

{'/var/www/test.jgp': 1, '/var/www/banner.jgp': 2} 

(辞書の理解をどうすることも可能であると仮定して)、この上の任意のアドバイスをいただければ幸いです)。

+0

各キーの値を何らかの種類のインデックスにするようにしようとしていますか?私はあなたがしようとしていることについて混乱しています。 – Tagc

答えて

1

あなたは開始インデックスとenumerate()を利用することができます

>>> {f: n for n, f in enumerate(files, 1)} 
{'/var/www/test.jgp': 1, '/var/www/banner.jgp': 2} 

ちょうどdict objects are inherently unorderedことを覚えておいてください。指定されていない順番で番号が付けられたキーだけが必要な場合は、明らかに問題ありません。ただし、特定の注文が必要な場合は、再考する必要があります(またはcollections.OrderedDict)。

+0

Python 3.6から、辞書が発注されます。 –

+0

ありがとう!それらを順不同にしても問題ありません。各ファイルの参照番号が必要です。 – user1165419

+0

@MikeMüller:おかげさまで、ありがとうございました(ここで下位互換性に役立たない場合でも)。 – NPE