请更正我的代码
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,'c'),
Contact(4,'a')]
print(ind(contacts))
需要输出 -
{'a':[1,4], 'b':2, 'c':3}
答案 0 :(得分:1)
以下方法创建列表值,如:
{'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'开头),请将from collects import OrderedDict
添加到文件顶部,然后方法为:
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