用理解创建字典?

时间:2014-03-10 13:37:00

标签: python python-3.x list-comprehension

我正在尝试创建一个传递某种条件的目录字典。重要的是每个目录都设置为一个值,并且每个键都从1开始编号。

我在这里写了一些东西就是这样,但我想知道是否有更好的方法来做到这一点?

dict(enumerate(sorted([x for x in os.listdir("T:\\") if certain_condition(x)]), start=1))

结果:

{1: 'folderA', 2: 'folderB', 3: 'folderC', 4: 'folderD', 5: 'folderE', 6: 'folderF'}

非常感谢

1 个答案:

答案 0 :(得分:6)

只需使用列表:

[None] + sorted([x for x in os.listdir("T:\\") if certain_condition(x)]

您可以按索引访问每个值,从1开始。

如果你的键不只是顺序整数和/或你需要在不改变索引的情况下从中移除项目,那么dict理解也会起作用:

{'A{}'.format(i + 1): v for i, v in enumerate(sorted(x for x in os.listdir("T:\\") if certain_condition(x)))}

或者您可以使用itertools.count() object为您提供计数器:

from itertools import count
index = count(1)

{'A{}'.format(next(index)): v for v in sorted(os.listdir("T:\\") if certain_condition(v)}