Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有相同var值的对象似乎是列表中index()方法的唯一对象_Python - Fatal编程技术网

Python 具有相同var值的对象似乎是列表中index()方法的唯一对象

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。它包含在甲板列表中。但同时

所以我有一张模型卡。在项目中,我创建了此模型的cardData包装器:

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属性吗