当前位置: 首页 > 面试题库 >

在Python循环中构建字典-列表和字典理解

范修伟
2023-03-14
问题内容

我在玩一些python循环。我对使用“ for”循环非常熟悉:

for x in y:
    do something

您还可以使用循环创建一个简单列表:

i = []
for x in y:
   i.append(x)

然后我最近在Stack上发现了一种不错的高效循环类型来构建一个列表(这种类型的循环有名称吗?我真的很想知道,以便可以对其进行更好地搜索):

[x.name for x in y]

好的,话虽如此,我想进一步讲解最后一种循环,我尝试使用相同的逻辑类型构建python字典:

{x[row.SITE_NAME] = row.LOOKUP_TABLE for row in cursor}

而不是使用:

x = {}
for row in cursor:
   x[row.SITE_NAME] = row.LOOKUP_TABLE

我在等号上收到一条错误消息,告诉我这是无效的语法。我相信在这种情况下,这基本上是在告诉我等号是条件子句(==),而不是变量的声明。

我的第二个问题是,我可以使用这种类型的循环构建python字典吗?如果是这样,我将如何组织它?


问题答案:

简短格式如下(称为 dict理解 ,类似于 列表理解集合理解 等):

x = { row.SITE_NAME : row.LOOKUP_TABLE for row in cursor }

因此,通常给定一些_container带有某种元素的元素和一个_value为给定元素返回要添加到字典中此键的值的函数:

{ _key : _value(_key) for _key in _container }


 类似资料:
  • 我有一个熊猫的数据框 并希望创建一个这样的词典 我从来没有处理过熊猫数据框的字典,所以我不知道从哪里开始。我想我必须使用嵌套的for循环,但不知道如何循环数据帧中的动物部分。 提前谢谢。

  • 问题内容: 我想创建一个字典,其值为列表。例如: 如果我做: 我收到一个KeyError,因为d […]不是列表。在这种情况下,我可以在分配a后添加以下代码以初始化字典。 有一个更好的方法吗?可以说,直到进入第二个循环,我才知道需要的键。例如: 然后可以替代 与 处理此问题的最佳方法是什么?理想情况下,追加将“有效”。有什么方法可以表达我想要空列表的字典,即使我第一次创建列表时也不知道每个键? 问

  • 问题内容: 我是一名基本的python程序员,因此希望我的问题的答案会很容易。我正在尝试拿字典并将其附加到列表中。然后,字典更改值,然后再次循环添加。似乎每次执行此操作时,列表中的所有词典都会更改其值以匹配刚刚添加的值。例如: 我认为结果是,但是我得到了: 任何帮助是极大的赞赏。 问题答案: 您需要追加一个 副本 ,否则您将一遍又一遍地添加对同一词典的引用: 我用和代替和; 您不想掩盖内置类型。

  • 问题内容: 我有一个看起来像这样的csv: 我想制作一个以类别为键的字典,并以剩余数据作为值的字典列表。所以它看起来像这样: (此处缩进以提高可读性)。 我像下面的代码片段一样尝试了一下,但是到那儿我什么也没得到: 问题答案: 使用:

  • 问题内容: 我正在学习python,我像这样循环循环,将json转换为字典:它可以工作,但这是正确的方法吗?谢谢 :) 这里的JSON: 这里输出: 问题答案: 总体看来还不错。 无需先读取文件,然后使用负载。您可以直接使用负载。 为此,使用i和k是不正确的。它们通常仅应用于整数循环计数器。在这种情况下,它们是关键,因此更合适的方法会更好。也许重命名为和为?传达更多信息的东西将更易于阅读和维护。

  • 问题内容: 我喜欢Python列表理解语法。 它也可以用来创建字典吗?例如,通过遍历键和值对: 问题答案: 使用字典理解: 注意:这适用于Python 3.x(及2.7及更高版本)。以前在Python 2.6和更早版本中,dict内置函数可以接收可迭代的键/值对,因此您可以将其传递给列表理解或生成器表达式。例如: 在简单的情况下,您根本不需要理解… 但是,如果您已经具有可迭代的键和/或值,只需di