作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道检查字典中的键是否可用非常容易,但是某些值呢?
所以,我这里有一个列表字典,为了保持一致性,其中的键引用了一组字符串。它看起来有点像这样:
menu = {'breakfast':['soft-boiled eggs', 'hash brown', 'Earl Grey'],
'lunch':['pasta', 'soup'],
'dinner':['chips', 'beef stew', 'veggies']}
现在我想做的是检查'chips'
是否在我的菜单中,如果是,我想用'crusty bread'替换它
。我知道我可以尝试在菜单['午餐'] 中使用'chips' 或相同的早餐,但如果我不知道何时供应怎么办?
扩展
虽然这很难解释,但假设我们有一个名为 Food 的类,其定义如下:
class Food(object):
def __init__(self, meal):
self.meal = meal
self.ingredients = collections.defaultdict(set)
def __str__(self):
return "%s" %(self.meal)
这里,餐
指的是早餐、午餐或晚餐。我们有ingredients
,它是一个集合字典。 'potatoes'
是一种配料,键入后我们会显示相关菜肴:薯饼、薯条。因此,当我为我的函数调用 print meal, menu[meal].ingredients
时,我得到以下结果(这仅适用于早餐,因为这就是我放入的全部内容):
breakfast defaultdict(<type 'set'>, {'potatoes': set(['chips', 'hash brown']), 'eggs': set(['omelette', 'hard-boiled', 'soft-boiled']), 'tea': set(['Assam', 'Earl Grey', 'English'])})
所以这基本上就是针对特定“成分”的早餐。
现在,让我们假设最坏的情况已经发生,我的土 bean 已经用完了!我现在想做的是将 'potatoes'
替换为 'bread'
,在其下我将拥有值/类型 'roll'、'crusty ','棕色'
。人们会怎样做呢?
最糟糕的是,快到午餐时间时,我们的'阿萨姆'
茶就喝完了。与扩展之前的问题类似,我将如何删除它(在检查它是否存在之后)?
最佳答案
菜单
中的成员(member)资格很简单:
[k for k, v in menu.iteritems() if 'chips' in v]
使用 defaultdict
的成员资格的工作方式完全相同,因为包含检查不会改变它。
关于python - 有没有办法根据字典的值检查成员资格?确定之后,我们还可以做其他事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304749/
我是一名优秀的程序员,十分优秀!