【问题标题】:Access a dictionary's keys given a list of keys using dict comprehension使用字典理解访问给定键列表的字典键
【发布时间】:2019-04-10 23:34:27
【问题描述】:

我是 Python 新手,我正在努力更好地理解字典理解。假设我有一个包含大量键的字典,并且列表包含字典中较小的键子集(但有点大)。如果可能的话,你将如何使用 dict 理解来访问列表中的所有键值?

nw_dt = {}
for i in range(101):
    nw_dt[chr(i)] = randint(0, 101)
ky_lit = [chr(b) for b in range(50, 101)]

我累的有以下几点:

for kys in nw_dt:
    nw_dt[f'{kys for v in ky_lit}']

但是字符串是一个生成器表达式,它返回一个 KeyError

我也尝试过搜索单个键:

for kys in nw_dt:
    nw_dt[f'{kys if kys == chr(51)}']

返回字符串的EOF解析错误

【问题讨论】:

  • 但是你为什么要使用 dictionary 理解,你想要一个 list 键,还是只来自键子集的字典? list 推导式构建 lists,字典推导式构建 dictionaries。您能否提供具有预期输出的输入?注意,如果你想要一个键列表,你可以只做ky_list = list(nw_dt),如果你有一些键列表,并且想要some_dict中的值,做[some_dict[k] for k in keys_list]
  • 在格式字符串之外使用字典理解。
  • 你的问题不是很清楚,但这可能会:{key: value for key, value in nw_dt.items() if key in ky_lit}
  • 我正在尝试更改 nw_dt 中的值,但仅针对键的子集而不创建新字典。但是,我的问题是我试图成为 pythonic 并一次访问所有密钥,但我做不到。即在 ky_lit 中搜索一个键,如果存在,则在 nw_dit 中更改其值。
  • 遍历键列表,如果它存在于字典中,然后改变。这似乎是pythonic。如果您想更改字典,请不要使用字典理解,那不是它们的用途。

标签: python python-3.x list dictionary-comprehension


【解决方案1】:

您可以在字典推导中迭代列表:

{key: nw_dt[key] for key in ky_lit}

字典理解创建一个新字典,但它可以迭代任何可迭代的类型。

【讨论】:

    猜你喜欢
    • 2022-09-28
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    相关资源
    最近更新 更多