首页 > 解决方案 > 值是可选的 Python 字典

问题描述

我正在寻找介于集合和字典之间的东西。一组唯一键,其中一些键具有值,但不是全部。

我可以使用值 None 表示没有值的字典,但是当大多数键没有值时,它会变得冗长:{1: 'one', 2: None, 3: None}。我希望它只是{1: 'one', 2, 3},但这是一个语法错误。

Python中有这样的东西吗?defaultdict在这里没有帮助。当您从字典中读取时,这会产生默认值,而不是在添加键时。

如果您想要一个动机,我正在尝试存储一组传递给编译器的 C #defines,它们-DSOMETHING没有值或-DSOMETHING=FOO有值。

标签: pythondictionaryset

解决方案


为什么你需要字典中的键?你可以像这样实现字典:

d = {1: 'one', 2: 'present'}

然后当你使用字典时,你可以这样做:

one = d.get(1, None) # 'one'
two = d.get(2, None) # 'two'
three = d.get(3, None) # None

也许我可以添加,您可以在一组中拥有完整的键列表:

keys = set([1,2,3])

并在查找中使用它:

for key in keys:
    value = d.get(key, None)
    if value is not None:
        ...
    else:
        ...

这是另一种选择。使用元组:

data = [(1, 'one'), (2, 'present'), (3,)]

for item in data:
    key = item[0]
    if len(item)>1:
         value = item[1]
    else:
         value = None

推荐阅读