使用推导式遍历字典并返回字典
如何通过字典推导式遍历一个字典并处理它。
>>> mime_types={
'.xbm': 'image/x-xbitmap',
'.dwg': 'image/vnd.dwg',
'.fst': 'image/vnd.fst',
'.tif': 'image/tiff',
'.gif': 'image/gif',
'.ras': 'image/x-cmu-raster',
'.pic': 'image/x-pict',
'.fh': 'image/x-freehand',
'.djvu':'image/vnd.djvu',
'.ppm': 'image/x-portable-pixmap',
'.fh4': 'image/x-freehand',
'.cgm': 'image/cgm',
'.xwd': 'image/x-xwindowdump',
'.g3': 'image/g3fax',
'.png': 'image/png',
'.npx': 'image/vnd.net-fpx',
'.rlc': 'image/vnd.fujixerox.edmics-rlc',
'.svgz':'image/svg+xml',
'.mmr': 'image/vnd.fujixerox.edmics-mmr',
'.psd': 'image/vnd.adobe.photoshop',
'.oti': 'application/vnd.oasis.opendocument.image-template',
'.tiff':'image/tiff',
'.wbmp':'image/vnd.wap.wbmp'
}
>>> {(key,val) for key, val in mime_types.items() if "image/tiff" == val}
这样返回的结果是这样的:
set([('.tiff', 'image/tiff'), ('.tif', 'image/tiff')])
但我期待的是
('.tif', 'image/tiff')
我该如何修改这个结果,以得到一个像这样的字典:
{'.tif': 'image/tiff'}
4 个回答
1
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是使用的工具和库不兼容。解决这些问题通常需要我们仔细检查代码,看看哪里出了问题。
另外,很多时候我们可以在网上找到其他人遇到类似问题的讨论,比如在StackOverflow这样的论坛上。这里有很多开发者分享他们的经验和解决方案,我们可以从中学习到很多。
总之,遇到问题时,不要慌张,先冷静下来,仔细分析,必要时可以寻求帮助,看看别人是怎么解决的。
you can try something like this
>>> print {k : v for k, v in mime_types.iteritems()}
Another Simple Example
>>> print {i : chr(65+i) for i in range(4)}
{0 : 'A', 1 : 'B', 2 : 'C', 3 : 'D'}
27
把
{(key,val) for key, val in mime_types.items() if "image/tiff" == val}
替换成
{key: val for key, val in mime_types.items() if "image/tiff" == val}
11
这个表达式:
{ value for bar in iterable }
是一个集合推导式。
如果你想做一个字典推导式,你需要给Python提供一组用:
分开的键值对:
{ key: value for bar in iterable }