首先出现在我脑海中的是一个字典,其中键作为列表值,字典值默认为None
,但这对我来说不太理想。任何人都可以提出一个单一结构(即没有单独的'选项'dict)替代方案,其中没有标志设置的项目dict[key]
返回None
,否则返回标志列表?如果我忽略了一些明显的惯例,我会道歉。
此结构的一个简单用法可能是order
实例,其中每个项目都可以选择包含修改(即没有坚果)。
答案 0 :(得分:5)
也许默认用户会这样做:
from collections import defaultdict
flags = defaultdict(lambda : None)
flags.update({'F1':True,'F3':True,'F8':True})
for f in 'F1 F2 F3 F4 F5 F6 F7 F8'.split():
print f, '->', flags[f]
打印:
F1 -> True
F2 -> None
F3 -> True
F4 -> None
F5 -> None
F6 -> None
F7 -> None
F8 -> True
答案 1 :(得分:1)
有几种可能性:
1)如果dict.get(key, None)
没有条目,则None
会返回key
。
2)dict = defaultdict( lambda: None )
创建一个dict,如果没有给定键的条目,则自动返回None
。
答案 2 :(得分:0)
正如您可能从我上面的评论中收集到的,我不确定您的真实要求是什么。但我的猜测是,它们与defaultdict
的建议所暗示的有些不同。听起来好像你想要一个 list 项目(有序,可能允许重复),每个项目都与一个可能空的 set 标志相关联。在这种情况下,最简单的解决方案可能是对(item,flags)
的列表,其中每个flags
都是一个集合对象。
这使您无法通过item
的值查找标记,但这听起来并不像我应该做的事情。 (以您的餐厅订单为例,可能有两个人item
就是HouseSalad
,但其中只有一人可能有no_nuts
标志。)
您当然可以通过调用list
来获取每个项目集的标记列表。
在任何特定的应用程序中,可能值得创建一个类来保存此信息并提供更透明的访问方式。如果您意识到需要它们,那么可以更容易地添加额外的功能(随机示例:能够找到具有给定标志的所有项目)。