在python中创建对象的字典

use*_*618 0 python dictionary

我创建了一个对象的字典(信用卡):

class CreditCard:

    def __init__(self,number,expire_date_month,expire_date_year,CVC):
        self.number=number
        self.expire_date_month=expire_date_month
        self.expire_date_year=expire_date_year
        self.CVC=CVC

credit_cards={CreditCard('1000000000000000','3','2011','111'):'VISA'}
credit_cards_frozen=frozenset({CreditCard('1000000000000000','3','2011','111'):'VISA'})
Run Code Online (Sandbox Code Playgroud)

但执行这些命令时出错:

print credit_cards['VISA'] #KeyError: 'VISA'
print credit_cards_frozen['VISA'] #TypeError: 'frozenset' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?

MAK*_*MAK 8

我认为您的代码有两个问题.

  • 如果您希望通过其关联的字符串(在本例中为"VISA")检索CreditCard对象,则应将字符串设为键,将对象设为值,而不是相反.你dict应该看起来像这样,

    credit_cards={'VISA':CreditCard('1000000000000000','3','2011','111')}

    如果同一个字符串有多个对象,则该值可以是list这些对象的值.

  • frozenset不是dict.它不存储(密钥,值)配对数据.创建frozenset从一个dict刚刚创建了一组与字典的所有键.你为什么还需要它?