Python的元组列表,其中包含di的键值

2024-09-29 23:18:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难尝试将一系列元组、键和值转换为字典。在

我有一个元组列表:

[('season', '1', 'episode', '1', 'showkey', '1736'),
('season', '1', 'episode', '2', 'showkey', '1737'),
('season', '1', 'episode', '3', 'showkey', '1738'),
('season', '1', 'episode', '4', 'showkey', '1739'),
('season', '1', 'episode', '5', 'showkey', '1740'),
('season', '1', 'episode', '6', 'showkey', '1741'),
('season', '1', 'episode', '7', 'showkey', '1742'),
('season', '1', 'episode', '8', 'showkey', '1743'),
('season', '1', 'episode', '9', 'showkey', '1744'),
('season', '1', 'episode', '10', 'showkey', '1745'),
('season', '1', 'episode', '11', 'showkey', '1746'),
('season', '1', 'episode', '12', 'showkey', '1747'),
('season', '1', 'episode', '13', 'showkey', '1748')]

如何制作具有键值对的字典,例如:

^{pr2}$

谢谢你的帮助!在


Tags: 列表字典season键值元组episodepr2showkey
3条回答

如果要为每个元组使用一个字典:

>>> i = ('season', '1', 'episode', '2', 'showkey', '1737')
>>> dict(zip(i[::2], i[1::2]))
{'season': '1', 'episode': '2', 'showkey': '1737'}

要扩展列表:

^{pr2}$

这是通过结合以下事实来实现的:

  1. dict()构造函数接受一个iterable对,它可以将其转换为键/值。在
  2. zip()将从传递给它的两个iterable返回元组对。在
  3. 切片允许您添加起始偏移量和步长参数。在

结合上述内容:

  1. 首先,我们按奇数位置i[::2]对元组进行切片,然后按偶数位置,跳过第一个元素i[1::2],这给了我们两个列表一个代表键,第二个是值:

    >>> i[::2]
    ('season', 'episode', 'showkey')
    >>> i[1::2]
    ('1', '2', '1737')
    
  2. 接下来,我们将这两个列表提供给zip,以得到(key,value)对:

    >>> zip(i[::2], i[1::2])
    [('season', '1'), ('episode', '2'), ('showkey', '1737')]
    
  3. 最后,我们将结果列表传递给dict()构造函数:

    >>> dict([('season', '1'), ('episode', '2'), ('showkey', '1737')])
    {'season': '1', 'episode': '2', 'showkey': '1737'}
    
map(lambda datum: dict(zip(datum[::2], datum[1::2])), data)

在慢动作中:

^{pr2}$

请原谅在我的手机上打错了字。在

我将使用一个列表理解,通过获取元组中每个连续的两个元素来创建dicts。在

代码-

d = [dict((i[j],i[j+1]) for j in range(0,len(i),2)) for i in lt]

这里lt是元组的列表。在

示例-

^{pr2}$

相关问题 更多 >

    热门问题