【问题标题】:How to enumerate items in a dictionary with enumerate( ) in python如何在 python 中使用 enumerate() 枚举字典中的项目
【发布时间】:2020-05-04 15:02:03
【问题描述】:

正如标题所示,我想在 python 中枚举键及其值(不带括号)。 我尝试了以下代码:

example_dict = {'left':'<','right':'>','up':'^','down':'v',}
[print(i,j,a) for (i,j,a) in enumerate(example_dict.items())]

但它不起作用。 我希望输出是这样的

0 left <
1 right >
2 up ^
3 down v

提前谢谢你

【问题讨论】:

  • 试试:[print(i,j,a) for i, (j,a) in enumerate(example_dict.items())]。此外,“example_dict”周围的括号也没用。
  • 尝试运行[print(all) for all in enumerate(a.items())],这样才能真正了解您正在解压的内容。 @wjandrea 已经提供了一个很好的答案:-)
  • 这很方便。好的,我会删除我之前的评论

标签: python dictionary for-loop list-comprehension enumerate


【解决方案1】:

在这种情况下,枚举返回(index, (key, value)),因此您只需将解包更改为for i, (j, a),尽管我个人会在示例中使用k, v 而不是j, a

for i, (k, v) in enumerate(example_dict.items()):
    print(i, k, v)

顺便说一句,don't use a comprehension for side effects;只需使用 for 循环。

【讨论】:

  • 哦,你的意思是我应该只对列表中的类似打印内容使用理解,而不是使用 for 循环从列表中打印出带有枚举等修饰符的内容?
  • @Humble_Snowman 我的意思是,列表推导是用于构建列表的,但您的最终目标实际上是打印,而不是构建列表。生成的列表是[None, None, None, None],这是没有意义的。
【解决方案2】:

正如 Alexandre 的评论,代码会这样工作:

for (i, (name, sym)) in enumerate(example_dict.items()):
    print(i, name, sym)

关于样式的评论:虽然在计算值时理解非常简洁,但将其用于循环打印会起作用,但会混淆代码的意图,使其可读性降低。

【讨论】:

  • 我不明白“用它来循环打印”。你能用更简单的术语解释一下吗?
  • 您使用了一个理解表达式进行打印: [print(i,j,a) for (i,j,a) in enumerate(example_dict.items())] 这有两个问题: 1)您计算一个无值列表(可能是一个大列表)(由打印返回); 2) 你隐藏了应该是什么,而且,在我的代码中,显然是一个输出操作,在一个计算的表达式中。
猜你喜欢
  • 2020-06-22
  • 2016-07-14
  • 2018-02-16
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
相关资源
最近更新 更多