Python:如何比较字典中不同键的值,然后删除重复项?

2024-09-24 02:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析100多个遵循相同格式的文件。例如,对于一个文件,我有一个由两个键和一个列表中的多个值组成的字典。在

   temp2 = {
  '0.1995': ['X3:GATE', 'IN1', 'IN1', 'X7:GATE', 'X4:GATE', 'IN2', 'IN2', 'X8:GATE'],
  '0.399': ['X4:GATE', 'Y', 'Y', 'X3:GATE', 'Y', 'X8:SRC', 'X1:GATE', 'IN0', 'IN0', 'X5:GATE']

下面是创建temp2字典的代码:

^{pr2}$

我试图搜索每个键的值,然后对于没有Y值的键(0.1995)删除该键出现的所有值,这些值也出现在具有Y的键(0.399)中价值观键值不是硬编码的,可能会更改。在

输出应为:

temp2 = {
  '0.1995': ['X3:GATE', 'IN1', 'IN1', 'X7:GATE', 'X4:GATE', 'IN2', 'IN2', 'X8:GATE'],
  '0.399': ['Y', 'Y','Y', 'X8:SRC', 'X1:GATE', 'IN0', 'IN0', 'X5:GATE']
}

以下是我目前为止发现的代码:

        for test_d, test_p in temp2.items():
            if not re.search('Y', ' '.join(test_p)) :
                for x in test_p:
                    print x
            else:
                for y in test_p:
                    print y

在这里,我认为我应该将print语句替换为与另一个进行比较的列表。在


Tags: 文件intest列表for字典printgate
1条回答
网友
1楼 · 发布于 2024-09-24 02:13:53

可能你在找

>>> temp2 = {
  '0.1995': ['X3:GATE', 'IN1', 'IN1', 'X7:GATE', 'X4:GATE', 'IN2', 'IN2', 'X8:GATE'],
  '0.399': ['X4:GATE', 'Y', 'Y', 'X3:GATE', 'Y', 'X8:SRC', 'X1:GATE', 'IN0', 'IN0', 'X5:GATE']
}
>>> _set = set(temp2['0.1995'])
>>> temp2['0.399'] = [e for e in temp2['0.399'] if e not in _set]
>>> import pprint
>>> pp = PrettyPrinter(indent = 4)
>>> pp.pprint(temp2)
{   '0.1995': [   'X3:GATE',
                  'IN1',
                  'IN1',
                  'X7:GATE',
                  'X4:GATE',
                  'IN2',
                  'IN2',
                  'X8:GATE'],
    '0.399': ['Y', 'Y', 'Y', 'X8:SRC', 'X1:GATE', 'IN0', 'IN0', 'X5:GATE']}
>>> 

相关问题 更多 >