【问题标题】:Assigning Key, Value in a Dictionary Comprehension in Python在 Python 中的字典理解中分配键、值
【发布时间】:2021-07-11 15:43:02
【问题描述】:

我很难理解字典理解。

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))} 的变体,但根据我的评论我不清楚它是否可以通过字典理解实现。

【问题讨论】:

    标签: python list dictionary dictionary-comprehension


    【解决方案1】:

    当您定义了path 时,这应该可以工作:

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

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

    【讨论】:

      【解决方案2】:

      试试:

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

      解释:

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

      1. 钥匙 - 物品
      2. 值 - 表达式os.listdir(path + "/" + item + "/urls")

      【讨论】:

      • 你有没有机会像我 5 岁一样编辑解释的答案?我想知道在概念上我不理解解决方案的语法的地方。
      猜你喜欢
      • 2021-10-25
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多