Python - 列表字典

时间:2015-01-04 22:01:36

标签: python dictionary

制作列表字典的最佳方法是什么? 例如,如果我有 list1,list2 列表,并希望像这样创建一个字典 my_dict

my_dict = ['list1': list1, 'list2': list2]

我找到了this示例,但最好的答案是在2009年写的。也许有一些新的更简洁的方法可以做到这一点?

6 个答案:

答案 0 :(得分:8)

你需要使用卷曲而不是方括号,但除此之外它可能是最好的:

list1 = ['a', 'b', 'c']
list2 = [1, 2, 3, 4]
my_dict = {'list1': list1, 'list2': list2}

答案 1 :(得分:4)

对于列表字典,请考虑defaultdict

普通字典工作正常,但如果找不到密钥则会引发错误。

list1 = list("abcd")
list2 = [1, 2, 3, 4]


d = {"list1": list1, "list2": list2}
d["list3"]
# KeyError: 'list3'

这可能在某些应用程序中具有破坏性,可能需要额外的异常处理。

defaultdict 的行为类似于普通字典,同时添加了一些针对错误的保护。

import collections as ct


dd = ct.defaultdict(list)
dd.update(d)
dd
# defaultdict(list, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]})

添加缺失的密钥将调用默认的工厂函数,即list。在这里我们得到一个空容器而不是错误:

dd["list3"]
# []

此条目添加了一个空列表。

dd
# defaultdict(list,
#             {'list1': ['a', 'b', 'c', 'd'],
#              'list2': [1, 2, 3, 4],
#              'list3': []})

将默认工厂设为defaultdict

,将None转换为常规字典
dd.default_factory = None
dd
# defaultdict(None, {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]})

或使用dict()内置:

dict(dd)
# {'list1': ['a', 'b', 'c', 'd'], 'list2': [1, 2, 3, 4]}

答案 2 :(得分:2)

如果您想将变量名称变为键,则此处为similar question

如果您只想要一个带有顺序键的列表字典。

def turn_to_dict(*args):
    return {i: v for i, v in enumerate(args)}

lst1 = [1, 2, 3, 4]
lst2 = [3, 4, 6, 7]
lst3 = [5, 8, 9]

v = turn_to_dict(lst1, lst2, lst3)

>>> print(v)
{0: [1, 2, 3, 4], 1: [3, 4, 6, 7], 2: [5, 8, 9]} 

答案 3 :(得分:1)

尝试这种方法,非常简洁。花括号,而不是方括号。

我认为这是最简短的方法。

list1 = [5, 500, 543]
list2 = [4, 4, 4]

my_dict = {'list1':list1, 'list2': list2}

答案 4 :(得分:0)

使用大括号语法定义字典,并为字典中的每个条目指定一个与每个值对应的键:

list_a = [1,2,3,4,5]
list_b = [6,7,8,9,10]

my_dict = {'list1':list_a, 'list2':list_b}

More in the python docs

答案 5 :(得分:0)

这应该有效:

my_dict = dict([('list1', list1), ('list2', list2)])

或者,或者:

my_dict = {'list1': list1, 'list2': list2}

结果将是相同的。