【发布时间】:2015-07-07 19:19:03
【问题描述】:
我目前正在使用本指南学习 python(如果您需要更多上下文)http://www.diveintopython3.net/comprehensions.html#dictionarycomprehension
>>> import os, glob, humansize
>>> metadata_dict = {f:os.stat(f) for f in glob.glob('*')} ①
>>> humansize_dict = {os.path.splitext(f)[0]:humansize.approximate_size(meta.st_size) \
... for f, meta in metadata_dict.items() if meta.st_size > 6000} ②
>>> list(humansize_dict.keys()) ③
['romantest9', 'romantest8', 'romantest7', 'romantest6', 'romantest10', 'pluraltest6']
>>> humansize_dict['romantest9'] ④
'6.5 KiB'
为什么是 'humansize.approximate_size(meta.st_size)' 以及 'for f, meta' 中的元变量是从哪里来的?
【问题讨论】:
-
您正在循环遍历
meta_dict.items(),因此meta是键值对中的值(f是键)。不知道humansize.approximate_size()是从哪里来的,那将来自进口。meta_dict是您使用形成值的os.stat(f)表达式创建的字典,因此meta引用之前返回的任何os.stat(f)。 -
metadata_dict.items()从metadata_dict字典中返回一个元组或一对(key, value),f是键,meta是值
标签: python python-3.x dictionary-comprehension