我有一个关于理解的基本问题。 有一个dict列表,其中值是列表,如下所示:
listionary = [{'path': ['/tmp/folder/cat/number/letter', '/tmp/folder/hog/char/number/letter', '/tmp/folder/hog/number/letter', '/etc'],
'mask': True,
'name': 'dict-1'},
{'path': ['/tmp/folder/dog/number-2/letter-4', '/tmp/folder/hog-00/char/number-1/letter-5', '/tmp/folder/cow/number-2/letter-3'],
'mask': True,
'name': 'dict-2'},
{'path': ['/tmp/folder/dog_111/number/letter', '/tmp/folder/ant/char/number/letter', '/tmp/folder/hen/number/letter'],
'mask': True,
'name': 'dict-3'}]
我需要的是从每个独特的动物的列表类型值。 动物总是在tmp/folder/和下一个/之间。 我所做的:
import re
flat_list = [item for sublist in [i['path'] for i in listionary] for item in sublist]
animals = list(set([re.search('folder/([a-z]+)', elem).group(1) for elem in flat_list if 'tmp' in elem]))
它也可以压缩成一行,但它非常复杂且不可读:
animals = list(set([re.search('folder/([a-z]+)', elem).group(1) for elem in [item for sublist in [i['path'] for i in listionary] for item in sublist] if 'tmp' in elem]))
关于理解力的大小有什么黄金法则吗(例如python的禅)? 我怎样才能做得更好?先谢谢你。你知道吗
缩短的解决方案:
输出:
你可以试试这个:
输出:
我怎样才能做得更好?
下面是我将如何分解最后两点。。你知道吗
相关问题 更多 >
编程相关推荐