问题描述
from collections import defaultdict,OrderedDict
weblogs = [
('Nanda','google.com'),('Maha',('Fei','python.org'),('Nanda','dzone.com'),]
web = [t for t in (set(tuple(i) for i in weblogs))]
res = defaultdict(list)
for i,j in web:
res[j].append(i)
a = OrderedDict()
a = dict(res)
for i,j in sorted(a.items()):
print(i,j)
dzone.com ['Fei']
google.com ['Maha','Nanda']
python.org ['Nanda','Fei']
dzone.com ['Fei']
google.com ['Nanda','Maha']
python.org ['Fei','Nanda']
有没有办法保持值的恒定顺序?
解决方法
问题来自集合中值的顺序。一个简单的解决方案是更改该行:
web = [t for t in (set(tuple(i) for i in weblogs))]
像这样:
web = [t for t in (sorted(set(tuple(i) for i in weblogs)))]