gpt4 book ai didi

python - 如何从Python字典列表中提取重复的键和值?

转载 作者:行者123 更新时间:2023-12-01 09:09:27 30 4
gpt4 key购买 nike

我有一个从产品及其变体中获取的字典列表,其定义如下:

attribute_list = [
{'Finish': 'Chrome'},
{'Size': 'Large'},
{'Weight': '1.6kg'},
{'Finish': 'Chrome'},
{'Weight': '1.9kg'}
]

我正在创建两个列表,其中一个包含列表中不重复的字典,即:

compiled_list = [
{'Finish': 'Chrome'}
{'Size': 'Large'}
]

...另一个包含重复的键和值,即:

duplicates_list = [
{'Weight': '1.6kg'}
{'Weight': '1.9kg'}
]

下面是我到目前为止的代码,这让我有两个字典,但是 1) 我认为这是非常低效的,2) 我不知道如何删除重复字典的第一个实例.

compiled_list = list()
compiled_list_keys = list()
duplicates_list = list()
for attribute in attribute_list:
for k, v in attribute.items():
if k not in compiled_list_keys:
compiled_list_keys.append(k)
compiled_list.append(attribute)
else:
if attribute not in compiled_list:
duplicates_list.append(attribute)
compiled_list_keys.remove(k)

最佳答案

此解决方案涉及使用 Pandas,这是一个更适合数据管理的 Python 包。你会明白为什么:

  1. 首先我们将字典列表转换为 pandas。在这里,我们删除完全相同的重复项:

    df = pd.DataFrame([list(attr.items())[0] for attr in attribute_list],
    columns=['key', 'value']).drop_duplicates()
    #> key value
    0 Finish Chrome
    1 Size Large
    2 Weight 1.6kg
    4 Weight 1.9kg
  2. 现在我们应用搜索功能。使用 pandas 非常简单:

    compiled_df = df.drop_duplicates(subset='key', keep=False)
    #> key value
    0 Finish Chrome
    1 Size Large
    duplicated_df=df[df.key.duplicated(keep=False)]
    #> key value
    2 Weight 1.6kg
    4 Weight 1.9kg
  3. 现在我们转换回原始的字典列表:

    compiled_list = [{item.key: item.value} for item in compiled_df.itertuples()]
    #> [{'Finish': 'Chrome'}, {'Size': 'Large'}]

    duplicated_list = [{item.key: item.value} for item in duplicated_df.itertuples()]
    #> [{'Weight': '1.6kg'}, {'Weight': '1.9kg'}

这可能不是最有效的方法,但它的用途要广泛得多。简而言之,5行代码:

df = pd.DataFrame([list(attr.items())[0] for attr in attribute_list],
columns=['key', 'value']).drop_duplicates()
compiled_df = df.drop_duplicates(subset='key', keep=False)
duplicated_df=df[df.key.duplicated(keep=False)]
compiled_list = [{item.key: item.value} for item in compiled_df.itertuples()]
duplicated_list = [{item.key: item.value} for item in duplicated_df.itertuples()]

关于python - 如何从Python字典列表中提取重复的键和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51785355/

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