在 Python 中的字典理解中分配键、值

Assigning Key, Value in a Dictionary Comprehension in Python

我很难理解词典。

This answer 表示正确的语法是 {key: value for (key, value) in iterable}.

这是否意味着我不能使用下面的代码创建一个更优雅的 oneliner 来从 os.listdir 创建字典?

import os

d = {}
for item in os.listdir(path):
    d[item] = os.listdir(path + "/" + item + "/urls")

我正在尝试从路径创建字典键,然后从静态子文件夹 /urls.

创建值

{'foo': ['bar','bah'], 'foo1': ['bar1', 'bah1']}

我试过 a = {v: k for k, v in enumerate(os.listdir(path))} 的变体,但根据我的评论我不清楚是否可以通过词典理解实现。

尝试:

d = {item: os.listdir(path + "/" + item + "/urls") for item in os.listdir(path)}

解释:

对于 os.listdir(path) 返回的每个元素(在我的例子中命名为 item),创建以下 key: value 对,其中:

  1. 关键 - 项目
  2. value - 表达式 os.listdir(path + "/" + item + "/urls")

这应该在您定义 path:

时起作用
d = {item: os.listdir(path + "/" + item + "/urls") for item in os.listdir(path)}

唯一的问题是在计算路径不存在时检查 FileNotFoundError 异常。因此,如果您冒着生成无效路径的风险,我建议您使用原始语法。