我创建了一个对象词典(信用卡):
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'})
但执行这些命令时出错:
print credit_cards['VISA'] #KeyError: 'VISA'
print credit_cards_frozen['VISA'] #TypeError: 'frozenset' object is not subscriptable
我的代码出了什么问题?
答案 0 :(得分:8)
我认为您的代码有两个问题。
如果您希望通过其关联的字符串(在本例中为“VISA”)检索CreditCard对象,则应将字符串作为键,将对象作为值,而不是相反。您的dict
应该是这样的,
credit_cards={'VISA':CreditCard('1000000000000000','3','2011','111')}
如果同一个字符串有多个对象,则该值可以是这些对象的list
。
frozenset
不是dict
。它不存储(密钥,值)配对数据。从frozenset
创建dict
只会创建一个包含dict所有键的集合。你为什么还需要它?