Python将列表值分解为子组件并维护密钥

时间:2013-12-30 23:10:21

标签: python tuples

你好我有一个如下列表:

['2925729', 'Patrick did not shake our hands nor ask our names. He greeted us promptly and politely, but it seemed routine.'].

我的目标是如下结果:

['2925729','Patrick did not shake our hands nor ask our names'], ['2925729', 'He greeted us promptly and politely, but it seemed routine.']

非常感谢任何指针。

1 个答案:

答案 0 :(得分:1)

>>> t = ['2925729', 'Patrick did not shake our hands nor ask our names. He greeted us promptly and politely, but it seemed routine.']
>>> [ [t[0], a + '.'] for a in t[1].rstrip('.').split('.')]
[['2925729', 'Patrick did not shake our hands nor ask our names.'], ['2925729', ' He greeted us promptly and politely, but it seemed routine.']]

如果您有大型数据集并且想要节省内存,则可能需要创建生成器而不是列表:

g = ( [t[0], a + '.'] for a in t[1].rstrip('.').split('.') )
for key, sentence in g:
    # do processing

生成器不会一次创建所有列表。他们在您访问时创建每个元素。这只有在您不需要一次完整列表时才有用。

ADDENDUM:如果你有多个密钥,你问过如何制作词典:

>>> data = ['1', 'I think. I am.'], ['2', 'I came. I saw. I conquered.']
>>> dict([ [t[0], t[1].rstrip('.').split('.')] for t in data ])
{'1': ['I think', ' I am'], '2': ['I came', ' I saw', ' I conquered']}