首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在字典的值中添加非重复元素

如何在字典的值中添加非重复元素
EN

Stack Overflow用户
提问于 2022-10-29 13:14:46
回答 2查看 64关注 0票数 -2

我想把我的列表中的每五个成员作为我的字典的值,但是重复的数字不应该添加在单个的值中,我需要以最短的顺序用Python实现这个程序。

例如,如果列表是lst = [9, 9, 9, 2, 3, 4, 5, 5, 6, 6],则结果字典应该是d = {1: [9, 2, 3], 2: [4, 5, 6]}

另一个例子是lst = [8, 6, 1, 9, 1, 0, 2, 8],结果字典是{1: [8, 6, 1, 9], 2: [0, 2, 8]}

EN

回答 2

Stack Overflow用户

发布于 2022-10-29 13:38:24

你可以用字典理解:

代码语言:javascript
运行
复制
def fn(lst, n):
    return {
        idx: list(dict.fromkeys(lst[i : i + n]))
        for idx, i in enumerate(range(0, len(lst), n), start=1)
    }


print(fn([9, 9, 9, 2, 3, 4, 5, 5, 6, 6], 5))
print(fn([8, 6, 1, 9, 1, 0, 2, 8], 5))

产出:

代码语言:javascript
运行
复制
{1: [9, 2, 3], 2: [4, 5, 6]}
{1: [8, 6, 1, 9], 2: [0, 2, 8]}

解释

您需要使用n的步骤遍历列表。然后创建包含n项的片。为了删除重复项,我使用了dict.fromkeys(),它保留了插入顺序。同时,这些密钥也来自enumerate(..., start=1)

票数 3
EN

Stack Overflow用户

发布于 2022-10-29 13:35:10

一种将原始数组分块并在每个块中应用dict.fromkeys并将其转换为dict的方法

代码语言:javascript
运行
复制
a = [9,9,9,2,3,4,5,5,6,6]

def chunks(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

l = [list(dict.fromkeys(chunk)) for chunk in chunks(a,5)]

d = {k+1:v for k,v in enumerate(l)}

print(d)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74245599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档