gpt4 book ai didi

python - 删除分配给字典中每个键的值列表中的重复项的函数?

转载 作者:行者123 更新时间:2023-12-05 05:43:28 63 4
gpt4 key购买 nike

我想创建一个函数,首先通过键合并字典中的重复条目,然后删除每个键中的重复值。但是,我希望删除的重复项与它们所在的值列表中的其他值相关,而不是整个字典的值列表。如果可能,是否可以使用仅使用没有列表理解的 for 循环来完成?

示例输入看起来像

remove_value_duplicates(Stores)

在哪里

Stores = [{'deli': ['beef', 'chicken', 'beef'],
'bakery': ['chicken']},
{'deli': ['chicken', 'chicken', 'beef'],
'bakery': ['chicken'],
'meat_store': ['beef']}]

这将是

{'deli': ['beef', 'chicken'],
'bakery': ['chicken'],
'meat_store': ['beef']}

当分解成步骤时,函数的过程应该是这样的。

  1. 该函数应首先在字典中查找重复的键,当它找到它们时,它会将它们合并为一个键,同时从重复项中继承值。如果没有重复,则可以跳过此步骤。

(例如,键 'deli' 在字典中出现了多次,因此它的副本将被合并到 'deli':['beef','chicken',' beef','chicken','chicken','beef']'bakery' 也会发生同样的情况,变成 'bakery':['chicken', 'chicken']'meat_store' 没有任何重复项,因此不会合并任何内容,值保持不变。)

  1. 之后,该函数检查每个键值列表中的重复项。这将 'deli':['beef','chicken','beef','chicken','chicken','beef'] 缩短为 'deli':['beef' ,'chicken']'bakery':['chicken','chicken']'bakery'['chicken']‘meat_store’ 没有任何重复值,因此这不适用于键。在此之后,返回新字典。

我尝试过的事情

我想尝试测试一些变量,看看我是否可以隔离并删除列表中的重复项。下面的列表与我试图定义的函数不同,但它假定字典中的值已提取到名为 wordlists 的变量中。我想看看是否可以从子列表中删除重复项,然后将修改后的子列表重新附加到更大的列表。

wordlists = [['meat', 'meat', 'cheese'],['onions']]

new_lists = []
new_sublists = []
for sublists in wordlists:
for values in sublists:
if values not in new_sublists:
new_sublists.append(values)
new_sublists
new_lists.append(new_sublists)
new_lists

output:
[['meat', 'cheese', 'onions']]

虽然该过程确实删除了重复的字符串,但它不会按预期重新附加修改后的子列表。我想要的预期输出应该类似于 [['meat','cheese'],['onions']]。我计划在定义函数时使用与此类似的代码行,但我不确定它是否可行。

最佳答案

Dictionary 值的完美数据结构是集合而不是列表,因为您不希望重复。因此,如果这不是现在或将来的限制,我建议您进行更改。

但是如果它是一个约束,下面可能是你的代码:

def remove_value_duplicates(Stores):
for Store in Stores:
for k,v in Store.items():
v_set = set()
i = 0
while i<len(v):
item = v[i]
if item in v_set:
v.pop(i)
else:
v_set.add(item)
i+=1

Stores = [{'deli': ['beef', 'chicken', 'beef'], 'bakery': ['chicken']}, {'deli': ['chicken', 'chicken', 'beef'], 'bakery': ['chicken'],'meat_store':['beef']}]
Store = Stores[1]
remove_value_duplicates(Stores)

print(Stores)

以上代码对你输入的输出如下:

[{'deli': ['beef', 'chicken'], 'bakery': ['chicken']}, {'deli': ['chicken', 'beef'], 'bakery': ['chicken'], 'meat_store': ['beef']}]

关于python - 删除分配给字典中每个键的值列表中的重复项的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71819898/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com