Python 3.x 在python中迭代类变量
请更正我的密码 PS-我对python相当陌生Python 3.x 在python中迭代类变量,python-3.x,Python 3.x,请更正我的密码 PS-我对python相当陌生 class Contact: def __init__(self,cid, email): self.cid=cid self.email=email def ind(contacts): index={} #Code here return index contacts = [Contact(1,'a'), Contact(2,'b'), Contact(3,
class Contact:
def __init__(self,cid, email):
self.cid=cid
self.email=email
def ind(contacts):
index={}
#Code here
return index
contacts = [Contact(1,'a'),
Contact(2,'b'),
Contact(3,'c'),
Contact(4,'a')]
print(ind(contacts))
需要像这样的输出吗-
{'a':[1,4], 'b':2, 'c':3}
以下方法创建列表值,如:
{'a':[1,4], 'b':[2], 'c':[3]}
我无法想象为什么这样做会不好,但我在最后添加了一个方法,可以获得特定的输出
这不会维护电子邮件的顺序:
def ind(contracts):
index={}
for contract in contracts:
index.setdefault(contract.email, []).append(contract.cid)
return index
要维护订单(例如,以“a”开头),请将收集导入订单信息的添加到文件顶部,然后使用以下方法:
def ind(contracts):
index = OrderedDict()
for contract in contracts:
index.setdefault(contract.email, []).append(contract.cid)
return index
index
的打印输出看起来会有所不同,但它的作用与普通的dict
对象相同(只是排序)
精确输出(带订购):
def ind(contracts):
index = OrderedDict()
for contract in contracts:
if contract.email in index:
value = index[contract.email]
if not isinstance(value, list):
index[contract.email] = [value]
index[contract.email].append(contract.cid)
else:
index[contract.email] = contract.cid
return index