在python中从两个不同大小的元组创建字典



我有两个元组,我需要组合成一个字典。元组2(值)正好是元组1(键)长度的一半

validexts = ( 
'.pz3','.cr2','.pz2','.pp2','.hr2','.fc2','.hd2','.lt2','.cm2','.mt5','.mc6',
'.pzz','.crz','.p2z','.ppz','.hrz','.fcz','.hdz','.ltz','.cmz','.mz5','.mcz' )
validvalues = ( 
'scene','character','pose','props','hair','face','hand','light',
'camera','materials','materials )

如何在python中从这两个元组中创建一个字典(键列表的第二部分将重复这些值)?

到目前为止,我的解决方案是将值加倍,像这样
validvalues += validvalues
validdict = dict( zip( validexts, validvalues ) )

我想知道是否有更python化的方法。

这里的规范方式是itertools.cycle:

from itertools import cycle
dict(zip(validexts, cycle(validvalues)))

输出:

{'.pz3': 'scene',
'.cr2': 'character',
'.pz2': 'pose',
'.pp2': 'props',
'.hr2': 'hair',
'.fc2': 'face',
'.hd2': 'hand',
'.lt2': 'light',
'.cm2': 'camera',
'.mt5': 'materials',
'.mc6': 'materials',
'.pzz': 'scene',
'.crz': 'character',
'.p2z': 'pose',
'.ppz': 'props',
'.hrz': 'hair',
'.fcz': 'face',
'.hdz': 'hand',
'.ltz': 'light',
'.cmz': 'camera',
'.mz5': 'materials',
'.mcz': 'materials'}

如文档中所述,cycle无限地重复可迭代对象:

创建一个迭代器,从可迭代对象中返回元素并保存每个元素的副本。当iterable用完时,返回保存副本中的元素。重复下去。

你可以用

from itertools import chain
validdict = dict( zip( validexts, chain(validvalues, validvalues) ) )

这将不会复制validvalues元组。

相关内容

  • 没有找到相关文章

最新更新