【问题标题】:creating a dictionary from 2 different sized tuples in python [duplicate]从python中的2个不同大小的元组创建字典[重复]
【发布时间】:2021-11-17 13:57:39
【问题描述】:

我有 2 个元组需要组合成字典。 元组 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 中的这 2 个元组创建一个字典(键列表的第二部分的值将重复)?

到目前为止,我的解决方案是将这样的值加倍

validvalues += validvalues
validdict = dict( zip( validexts, validvalues ) )

我想知道是否有更pythonic的方式。

【问题讨论】:

    标签: python dictionary tuples


    【解决方案1】:

    这里的规范方式是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'}
    

    正如documentation 中提到的,cycle 无限期地重复迭代:

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

    【讨论】:

      【解决方案2】:

      你可以去

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

      这不会复制validvalues 元组。

      【讨论】:

        猜你喜欢
        • 2022-11-28
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 2017-05-07
        相关资源
        最近更新 更多