>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> with open('myfile', 'r') as names:
... for line in names:
... firstnames, lastname = line.strip().rpartition(' ')[::2] # or just line.split() if there are always two words in each line
... d[lastname].append(firstnames)
...
>>> d
defaultdict(<type 'list'>, {'Bagwe': ['Rajendra'], 'Kale': ['Shankar', 'Mahendra'], 'Shirke': ['Jitendra']})
如果有一个元素的列表让您感到困扰,在Python2.7+中,您可以发布:
>>> d = {k:(v if len(v)!=1 else v[0]) for k,v in d.iteritems()}
>>> d
{'Bagwe': 'Rajendra', 'Kale': ['Shankar', 'Mahendra'], 'Shirke': 'Jitendra'}
由于您使用的是Python2.6,因此可以执行以下操作:
d = dict([(k,(v if len(v)!=1 else v[0])) for k,v in d.iteritems()])
我不知道是否可以有多个名字,所以这个解决方案将涵盖这种可能性。它假定姓氏总是行中的最后一个词。你知道吗
如果有一个元素的列表让您感到困扰,在Python2.7+中,您可以发布:
由于您使用的是Python2.6,因此可以执行以下操作:
尝试使用
Default dict
附加您的列表
相关问题 更多 >
编程相关推荐