我正在尝试创建一个函数,将给定的列表转换为给定的字典(如果需要,我可以指定/赋值)。
例如,如果我有一个列表
['a', 'b', 'c', ..., 'z']
我想转换成这样的字典
{1: 'a', 2: 'b', 3: 'c', ..., 26: 'z'}
我知道如何使用字典理解来做到这一点
{num : chr(96 + num) for num in range(1, 26)}
但我无法弄清楚如何将其变成一个更通用的函数,可以将任何列表转换为字典。这里最好的方法是什么?
将enumerated
列表传递给dict
构造函数
>>> items = ['a','b','c']
>>> dict(enumerate(items, 1))
>>> {1: 'a', 2: 'b', 3: 'c'}
在这里,enumerate(items, 1)
将产生元素及其指数的tuple
s。指数将从1
开始(请注意enumerate
的第二个论点)。使用此表达式,您可以定义内联函数,如:
>>> func = lambda x: dict(enumerate(x, 1))
调用它像:
>>> func(items)
>>> {1: 'a', 2: 'b', 3: 'c'}
或者是常规功能
>>> def create_dict(items):
return dict(enumerate(items, 1))
如果键只是list
中元素的索引,如示例所示:
{i+1: x for i, x in enumerate(mylist)}
遍历列表并将每个值分配给一个数字(从1
开始)。
def list_to_dict(items):
return {n + 1: items[n] for n in range(len(items))}
如果你想让字典从零开始,用n + 1
替换n
。