Python 具有相同var值的对象似乎是列表中index()方法的唯一对象
所以我有一张模型卡。在项目中,我创建了此模型的cardData包装器:Python 具有相同var值的对象似乎是列表中index()方法的唯一对象,python,Python,所以我有一张模型卡。在项目中,我创建了此模型的cardData包装器: card = Card.objects.get(id=someId) cardData = {} cardData.id = card.id cardData.title = card.title 然后我在卡片列表中放入了30多个卡片数据: deck = [cardData1, cardData2 ..., cardData17] 最后,在游戏的某个地方,我有一个链接,比如cardCata17。它包含在甲板列表中。但同时
card = Card.objects.get(id=someId)
cardData = {}
cardData.id = card.id
cardData.title = card.title
然后我在卡片列表中放入了30多个卡片数据:
deck = [cardData1, cardData2 ..., cardData17]
最后,在游戏的某个地方,我有一个链接,比如cardCata17。它包含在甲板列表中。但同时也有cardData2,具有相同的参数,因为它也是从相同的模型创建的。当我尝试获取cardData17的索引时:
index = deck.index(cardData17)
它返回index=2,而不是17,因为cardData 2也具有相同的id和标题。这很奇怪,我花了很多时间来理解这个问题。这个假设是真的还是我错了。将卡片数据作为对象,而不是字典。对象将通过其唯一的内存位置而不是内容来识别
class CardData(object):
def __init__(self, id, title):
self.id = id
self.title = title
card = Card.objects.get(id=someId)
cardData = CardData(card.id, card.title)
标识与您要查找的内容无关,如果您有两个具有相同内容的DICT,则将返回第一个匹配项。对象不同。如果id值相同,则两者的值相同,但其值不同。奇怪的是,这是两个不同的对象,但都包含在一个列表中,并且都具有相同的id和title值。它们是dicts还是objects?正如您所看到的,它们是objects:cardData={}这是一个字典,您可以添加实际代码,因为dicts没有id或title属性吗