Python:在字典中搜索松散匹配

2024-09-29 21:42:00 发布

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

我有一本python字典,如下所示 key: leftname//rightname

格式为{key: 'leftname // rightname)'}

我想确保每个“leftname”只出现一次。如果它再次出现,我想删除该键的整个值。你知道吗

这就是字典的这一部分在以后应该是什么样子,把词条划掉(删除)

enter image description here

注意Ruby出现了两次。这很好,因为我只需要确保每个“Leftname”是唯一的。每个“RightName”都可以重复。你知道吗

我尝试创建一个单独的名称数组结构拆分. 我不知道如何使用正则表达式来过滤和删除重复项。 坦率地说,我不知道我将如何做到这一点。你知道吗


Tags: key名称字典格式数组结构ruby词条
2条回答

这里有一个工作方法:

# simplified example
d = {1:'a // b', 2:'c // d', 3:'a // d', 4:'e // d'}

d_new = {}
seen_leftname = set()
for key, val in d.items():
    leftname = val.split(' // ')[0]
    if leftname not in seen_leftname:
        seen_leftname.add(leftname)
        d_new[key] = val

print(d_new)
{1: 'a // b', 2: 'c // d', 4: 'e // d'}

您还可以重置按键:

d_new = {}
seen_leftname = set()
key_new = 1
for val in d.values():
    leftname = val.split(' // ')[0]
    if leftname not in seen_leftname:
        seen_leftname.add(leftname)
        d_new[key_new] = val
        key_new += 1

print(d_new)
{1: 'a // b', 2: 'c // d', 3: 'e // d'}

你可以这样做:

output = {}
seen = set()
for k,v in data.items():
    leftname = v.split(' // ')[0]
    if leftname not in seen:
        seen.add(leftname)
        output[k] = v

其中data是保存数据的字典。你知道吗

相关问题 更多 >

    热门问题