当试图从两个列表创建字典时,有些元素是los

2024-04-24 07:44:27 发布

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

我有两个清单:

list_1 = ['2', '1', '1', '2', '1', '2', '1', '5', '4', '3', '2', '1', '3', '2', '1']
list_2 = ['az', 'z', 'c', 'bo', 'o', 'bo', 'o', 'beggh', 'eggh', 'ggh', 'gh', 'h', 'akl', 'kl', 'l']

两个列表中的字符串数相同。我想从这两个列表中创建一个字典,因此我尝试:

^{pr2}$

我期待的是:

{
  '2' : 'az',
  '1' : 'z',
  '1' : 'c',
  ....


}

我还希望字典中键值对的数目与list_1或list_2中的字符串数相同。然而,当我试图打印字典时,它给出了:

{'2': 'kl', '1': 'l', '5': 'beggh', '4': 'eggh', '3': 'akl'}

键值对的数目只有5,这明显少于list_1或list_2中的字符串数。出什么问题了?在


Tags: 字符串列表字典ghlistaz键值bo
1条回答
网友
1楼 · 发布于 2024-04-24 07:44:27

不能有一个具有重复键的字典,一种解决方案是按键对值进行分组,这里有一个使用itertools.groupby的示例

from itertools import groupby
list_1 = ['2', '1', '1', '2', '1', '2', '1', '5', '4', '3', '2', '1', '3', '2', '1']
list_2 = ['az', 'z', 'c', 'bo', 'o', 'bo', 'o', 'beggh', 'eggh', 'ggh', 'gh', 'h', 'akl', 'kl', 'l']

new_dict = {
    k : list(map(lambda x: x[1], v)) for k, v in groupby(sorted(zip(list_1, list_2)), key=lambda x: x[0])
}
print(new_dict)

Live example

或者简单地使用^{}

^{pr2}$

相关问题 更多 >