python - 将值从列表列表添加到字典键

标签 python python-3.x list dictionary

我有以下列表和字典:

list = [[1,2,2],[2,3,3],[3,4,4]
dict = {1:[], 2:[], 3:[]}

假设我想将 dict[keys] 中的所有值附加到各自的键中,这样:

dict = {1:[2,2], 2:[3,3], 3:[4,4]}

我尝试使用多个循环来完成此任务。然而,每当我这样做时,所有值都会被同时搜索并附加到每个 dict[key] 中。任何帮助将不胜感激!

最佳答案

l = [[1,2,2],[2,3,3],[3,4,4]]

# last key wins 
d = {sublist[0]:sublist[1:] for sublist in l}

print(d)

您可以根据列表元素构建字典。不要使用 listdict 作为名称,它们会隐藏内置函数。

sublist[0] 是第一个元素,sublist[1:] 是 l 中每一项的其余元素。

有关此处使用的语法的更多信息:PEP 274: Dict Comprehensions

输出:

{1: [2, 2], 2: [3, 3], 3: [4, 4]}     # last key wins (no duplicates present)

如果您也需要合并,可以使用:

# merging keys into values as list of sublists
l = [[2,2,2],[2,3,3],[3,4,4]]
d1 = {}
for sub in l:
    # creates dict of { key: [ [int,...], [int,...] ], ... } for same keys
    d1.setdefault(sub[0],[]).append(sub[1:]) 

或者通过展平:

# merging keys into values as flattened list
d2 = {}
for sub in l:
    # creates dict of { key: [ int,...,int,... ], ... } for same keys
    d2.setdefault(sub[0],[]).extend(sub[1:]) 

输出:

{2: [[2, 2], [3, 3]], 3: [[4, 4]]}    # merging keys into values as list of sublists

{2: [2, 2, 3, 3], 3: [4, 4]}          # merging keys into values as flattened list

为了合并,我使用了 dict.setdefault()您可能想看一下 collections.defaultdict()我确信它更适合。

关于python - 将值从列表列表添加到字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48827614/

相关文章:

python - 为什么我不能在 `pipenv install --dev` 之后运行开发依赖项?

python - Numpy 轴上的乘法

Python 3 正则表达式最后一场比赛

python - 和 Python 列表上的运算符

c++ - 采访 : Summing numbers in two linked lists

python - 当递归非常深入时,理解中的递归调用有什么特别之处?

python - 使用 bool 列表从另一个列表中检索元素 - Python

python - 未检测到 Python 3.8 安装

python - 如何删除引号并在 python 中检索列表?

c - C 中列表的第一个元素不正确(linux/list.h)