gpt4 book ai didi

python - 列出嵌套字典中的重复值

转载 作者:行者123 更新时间:2023-12-03 23:38:37 28 4
gpt4 key购买 nike

我需要检查字典中可能出现的重复值。我有以下布局的字典。欢迎任何建议!非常感谢
原词典

dic = {'ab1': [{'ans': 'Male', 'val': '1'},
{'ans': 'Female', 'val': '2'},
{'ans': 'Other', 'val': '3'},
{'ans': 'Prefer not to answer', 'val': '3'}],
'bc1': [{'ans': 'Employed', 'val': '1'},
{'ans': 'Unemployed', 'val': '2'},
{'ans': 'Student', 'val': '3'},
{'ans': 'Retired', 'val': '4'},
{'ans': 'Part-time', 'val': '5'},
{'ans': 'Prefer not to answer', 'val': '7'}],
'bc2': [{'ans': 'Mother',
'val': '1'},
{'ans': 'Father ', 'val': '2'},
{'ans': 'Brother', 'val': '3'},
{'ans': 'Sister', 'val': '4'},
{'ans': 'Grandmother', 'val': '4'},
{'ans': 'Grandfather', 'val': '6'},
{'ans': 'Son', 'val': '7'},
{'ans': 'Daughter', 'val': '8'}]}

预期输出 - 一个列表,只包含每个键具有相同值的项目 - 所以只有这个
ab1: Other 3, Prefer not to answer 3
bc2: Sister 4, Grandmother 4
我试过的代码 它旨在首先反转字典 - 但我认为会抛出不可散列的类型列表错误,因为它把它当作一个列表,而实际上 dict 可能是一个元组,但我不知道如何更改它
rev_dict = {}

for k, v in dic.items():
rev_dict.setdefault(v, set()).add(k)

res = set(chain.from_iterable(v for k, v in rev_dict.items()
if len(v) > 1))

最佳答案

您没有指定确切的输出格式,但是因为您标记了 pandas ,这是一个 pandas解决方案。

import pandas as pd
{k: pd.DataFrame(v)[lambda df: df['val'].duplicated(keep=False)].to_dict(orient='records') for k, v in dic.items()}
输出:
{
'ab1': [{'ans': 'Other', 'val': '3'},
{'ans': 'Prefer not to answer', 'val': '3'}],
'bc1': [],
'bc2': [{'ans': 'Sister', 'val': '4'}, {'ans': 'Grandmother', 'val': '4'}]
}

关于python - 列出嵌套字典中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67600014/

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