【问题标题】:Get keys from dict using list comprehention [duplicate]使用列表理解从dict中获取键[重复]
【发布时间】:2020-09-05 19:40:54
【问题描述】:

我在 python 中有一个列表和字典说, list A = [1, 3] dict B = {'apple':1, 'orange':3, 'carrot': 4} 所以现在我想在 python 中使用列表推导并在列表 A 中获取带有“值”的键列表。

【问题讨论】:

  • 你意识到你正在“反向”运行字典吧?

标签: python


【解决方案1】:

首先您需要遍历字典,然后检查该值是否在另一个列表中。
这可以在有或没有列表理解的情况下完成。

使用列表理解:

value = [x for x in B if B[x] in A]

没有列表理解:

value = []
for x in B:
    if B[x] in A:
        value.append(x)

【讨论】:

  • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能得到支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。
  • 已修复。谢谢推荐。
【解决方案2】:

TL;DR

a = set([1,3])
b = {'apple':1, 'orange':3, 'carrot': 4} 

# Filter dict b with a as keys
c = {k:v for k,v in b.items() if k in a}

【讨论】:

  • list(c.keys()) 为键列表,更正应为v in a
  • 另外,将列表 a 转换为 set(a) 以降低 in 操作的时间复杂度
【解决方案3】:

这个小列表理解应该可以。

a = [1,3]
b = {'apple':1, 'orange':3, 'carrot': 4}
print([x for x in b if b[x] in a])

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 2020-07-19
    • 2021-05-23
    • 2017-09-23
    • 2022-11-17
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多