我想做一个函数,首先在字典中按键合并重复条目,然后删除每个键中的重复值.但是,我希望删除的重复项与它们所在的值列表中的其他值相关,而不是整个字典的值列表.如果可能的话,是否可以使用only for-loops without list comprehension?
An example input would look like
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']}
这就是将函数的过程分解为步骤时的样子.
- 函数应该首先在字典中查找重复的键,当它找到它们时,它会将它们合并到一个键中,同时从重复项中继承值.如果没有重复项,则可以跳过此步骤.
(例如,键‘deli’
在字典中出现多次,因此其重复项将合并到'deli’:[‘beef’,’chicken’,’beef’,’chicken’,’chicken’,’beef’]
.‘bakery’
也会出现相同的情况,变成‘bakery’:[‘chicken’,’chicken’]
.‘meat_store’
没有任何重复项,因此不会合并任何内容,值保持不变.)
- 之后,该函数判断每个键的值列表中是否存在重复项.这将使
‘deli’:[‘beef’,’chicken’,’beef’,’chicken’,’chicken’,’beef’]
缩短到‘deli’:[‘beef’,’chicken’]
,‘bakery’:[‘chicken’,’chicken’]
缩短到‘bakery’[‘chicken’]
.‘meat_store’
没有任何重复值,因此这不适用于密钥.然后,返回新词典.
What I have tried doing
我想try 测试一些变量,看看是否可以隔离并消除列表中的重复项.下面的列表与我试图定义的函数不同,但它假设字典中的值已被提取到名为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']]
.我计划在定义函数时使用类似的代码行,但是我不确定它是否能工作.