在python中创建一个通用字典,从多对列表中获取键值对

时间:2018-10-25 06:21:01

标签: python dictionary

如何使用Python从多对列表中获取键值对来创建大型词典。例如,我们有6个列表,分别是 key1,val1,key2,val2和key3,val3 。现在,我想创建一个包含 key1,key2和key3 中的所有键以及分别来自val1,val2,val3 的对应值的字典。 例如:

val1 = ['3/12/2017', '12/18/2017', '12/18/2017', '12/12/2017']
key1 = [32, 45, 107, 150]
val2 = ['2000-03-13', '2014-11-31']
key2 = [166, 244]

我想要下面给出的字典:

big_dict = {32: '3/12/2017', 107: '12/18/2017', 45: '12/18/2017', 150: '12/12/2017', 244: '2014-11-31', 166: '2000-03-13'}

这怎么办? 谢谢

6 个答案:

答案 0 :(得分:2)

使用zip和简单的串联:

big_dict = dict(zip(key1+key2, val1+val2))

如果键和值列表的数量未知,请使用itertools.chainzip

from itertools import chain

big_dict = dict(zip(chain(*key_lists), chain(*val_lists)))

答案 1 :(得分:2)

一个简单的答案就是这样,尽管有很多有效的方法可以做到这一点。

val1 = ['3/12/2017', '12/18/2017', '12/18/2017', '12/12/2017']
key1 = [32, 45, 107, 150]
val2 = ['2000-03-13', '2014-11-31']
key2 = [166, 244]

big_dict = {}

big_dict.update(dict(zip(key1, val1)))
big_dict.update(dict(zip(key2, val2)))

或在之前合并列表并进行单行

keys = key1 + key2 # Make sure they are unique however or else dict() will show incorrect results
values = val1 + val2

big_dict.update(dict(zip(keys, values)))

print(big_dict)

答案 2 :(得分:1)

尝试此代码:

a=(dict(zip(key1,val1)))
b=(dict(zip(key2,val2)))
d = a.copy()
d.update(b)

答案 3 :(得分:0)

将所有列表添加到公共列表中并自动执行该过程,例如:

combined_dict = {}

values_lists = [ val1, val2 ]
keys_lists = [ key1, key2 ]

for itr in range(len(keys_list)):
    for list_itr in range(len(keys_list[itr])):
        combined_dict[keys_list[itr][list_itr]] = values_lists[itr][list_itr]

答案 4 :(得分:0)

我将合并列表,并使用zip将其合并为键和值(字典)。

val1 = ['3/12/2017', '12/18/2017', '12/18/2017', '12/12/2017']
key1 = [32, 45, 107, 150]
val2 = ['2000-03-13', '2014-11-31']
key2 = [166, 244]

keys = key1 + key2
vals = val1 + val2
d = dict(zip(keys, vals))

print (d)
# {32: '3/12/2017', 45: '12/18/2017', 107: '12/18/2017', 150: '12/12/2017', 166: '2000-03-13', 244: '2014-11-31'}

答案 5 :(得分:0)

您可以扩展列表并压缩它们,然后创建如下的字典

val1 = ['3/12/2017', '12/18/2017', '12/18/2017', '12/12/2017']
key1 = [32, 45, 107, 150]
val2 = ['2000-03-13', '2014-11-31']
key2 = [166, 244]

key1.extend(key2)
val1.extend(val2)

newdict = {k: v for k, v in zip(key1, val1)}

print(newdict)
相关问题