Python 是否可以一次迭代多个Dict键?

Python 是否可以一次迭代多个Dict键?,python,dictionary,tuples,iteration,Python,Dictionary,Tuples,Iteration,我有一个问题,我正在为一个在线MOOC工作,我现在正在学习编写一个函数,它获取一个药物列表,并查看病毒列表中的哪个病毒对所有药物都有耐药性 我已经用一个标志解决了这个问题,但我正试图找到其他方法来解决它。 我想到的一种方法是,如果可能的话,一次使用药物列表作为键,然后将值作为列表返回,这显然不起作用(我在搜索后发现我不能使用列表作为dict键)。 所以我的问题是:有没有可能使用iterable作为dict键,其中iterable的每个元素都是dict的单独键 我曾尝试过使用列表,但运气不佳,但我

我有一个问题,我正在为一个在线MOOC工作,我现在正在学习编写一个函数,它获取一个药物列表,并查看病毒列表中的哪个病毒对所有药物都有耐药性

我已经用一个标志解决了这个问题,但我正试图找到其他方法来解决它。 我想到的一种方法是,如果可能的话,一次使用药物列表作为键,然后将值作为列表返回,这显然不起作用(我在搜索后发现我不能使用列表作为dict键)。
所以我的问题是:有没有可能使用iterable作为dict键,其中iterable的每个元素都是dict的单独键

我曾尝试过使用列表,但运气不佳,但我知道元组可以作为dict键,但前提是元组本身是一个独特的键,而不是它的元素

以下是我想到的功能:

def getResistPop(自身,drugResist):
"""
获取对中列出的药物具有耐药性的病毒粒子的数量
药物抵抗。
药物抵抗:人群中包括哪些药物抵抗(列表)
字符串-例如['guttagonol']或['guttagonol','srinol'])
返回:对所有病毒都具有抗性的病毒(整数)数量
药物清单上的药物。
"""
totalPop=0
对于self.virus中的v:
如果所有(v.电阻[药物电阻]):
totalPop+=1
这是我能做的最好的不使用国旗。 但当然,它不会起作用,这会导致一个错误,即列表不能用作dict键。 我想知道类似的事情是否可能发生。 谢谢

编辑:根据@Yongkang Zhao的请求,以下是一些示例数据:

测试运行包含以下信息:

virus1 = ResistantVirus(1.0, 0.0, {"drug1": True}, 0.0)
virus2 = ResistantVirus(1.0, 0.0, {"drug1": False, "drug2": True}, 0.0)
virus3 = ResistantVirus(1.0, 0.0, {"drug1": True, "drug2": True}, 0.0)
patient = sm.TreatedPatient([virus1, virus2, virus3], 100)
patient.getResistPop(['drug1']): 2
patient.getResistPop(['drug2']): 2
patient.getResistPop(['drug1','drug2']): 1
patient.getResistPop(['drug3']): 0
patient.getResistPop(['drug1', 'drug3']): 0
patient.getResistPop(['drug1','drug2', 'drug3']): 0

调用getResistPop的每一行后的数字是抵抗所有药物的预期病毒数。

您建议的功能接近,只是您没有正确使用
all()

def getResistPop(self, drugResist):
    """<trimmed>"""

    totalPop = 0
    for v in self.viruses:
        if all(x in v.resistances for x in drugResist):
            totalPop += 1
def getResistPop(自身,drugResist):
""""""
totalPop=0
对于self.virus中的v:
如果全部(x英寸v电阻,x英寸电阻):
totalPop+=1

澄清一下-在这种情况下,您并不是一次迭代多个dict键,而是检查您的所有药物是否都在病毒的一组抗药性中,每个病毒。

您可以发布一些样本数据来处理吗?post
drugResist
内容和预期结果什么是
self.virus[病毒].电阻
数据结构?字典?“是否可以将iterable用作dict键…”-是:
{'ab':5}['ab']
,其中
'ab'
是iterable;“…其中该iterable的每个元素都是dict的单独键?”-是:
{'a':5'b':6'ab':30}['ab']
。这就是你想问的吗?我想你的问题是,是否有可能在某个iterable中为每个
k
检索索引
k
处的字典元素,不是吗?@YongkangZhao补充了一些数据。谢谢你的指点,谢谢!你的答案和我想要的非常接近,但它给了我想要的洞察力。我对它做了一点小小的修改,现在它就像一个符咒一样工作着这是我做的一个:
def getResistPop(self,drugResist):“”“totalPop=0表示self中的v.virus:如果所有(v.resistences中的D和v.resistences[D]表示drugResist中的D):totalPop+=1返回totalPop
@MahmoudAbdel-Mon'em很好,我忘了你的dict值是bools。很高兴它有帮助!