dict理解与范围

时间:2017-01-26 19:35:31

标签: python dictionary list-comprehension

我试图创建一个字典,将一个字典中的键作为键,并将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()列表和范围列表(1,len(文件)+ 1)然后使用zip之类的东西就可以完成。但是想知道是否有更优雅的解决方案使用字典理解。

我正在寻找类似的输出:

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

对此有任何建议(假设可以理解dict理解)将不胜感激。)

1 个答案:

答案 0 :(得分:2)

您可以将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)。