gpt4 book ai didi

python - 如何从 Python 字典中检测到 "missing"键?

转载 作者:行者123 更新时间:2023-12-05 09:11:55 25 4
gpt4 key购买 nike

我有以下 Python dict:

d = {'A-x': 1, 'A-y': 2,
'B-x': 3,
'C-x': 4, 'C-y': 5,
'D-x': 6, 'D-y': 7,
'E-x': 8}

此处的键代表“Level-SubLevel”模式。
没有 B-yE-y 键,因此可以将它们视为“缺失”。

我正在尝试检测这些“缺失的”关键级别,因此我的预期输出将是 list:

['B', 'E']

到目前为止,我有以下工作解决方案...

import numpy as np
from itertools import product

a = np.array([k.split('-') for k in d])
all_keys = ['-'.join(x) for x in list(product(set(a[:, 0]), set(a[:, 1])))]
missing_keys = [x.split('-')[0] for x in all_keys - d.keys()]

...但我觉得必须有更好/更清洁的解决方案 - 理想情况下使用标准 python 库。

我还应该澄清,在这种特殊情况下,键的“SubLevel”部分只能是 2 个可能值中的 1 个。所以只有 "x""y"。此外,"...-x"始终 存在,只有 "...-y" 可能会丢失。

如有任何建议,我们将不胜感激。

最佳答案

仅使用标准 python 库功能我可以提供此解决方案:

# Generate list of list of section/subsection pairs
a = [k.split('-') for k in d.keys()]

# Generate set of sections
sec = set([x[0] for x in a])
# {'A', 'D', 'C', 'B', 'E'}

# Generate set of subsections
subsec = set([x[1] for x in a])
# {'y', 'x'}

# Find missing keys by checking all combinations (saving only the section)
missing_keys = [s for s in sec for ss in subsec if [s, ss] not in a]
# ['B', 'E']

关于python - 如何从 Python 字典中检测到 "missing"键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com