【发布时间】: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