我试图创建一个字典,将一个字典中的键作为键,并将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理解)将不胜感激。)
答案 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
)。