格式为{key: 'leftname // rightname)'}
我想确保每个“左名”仅出现一次。如果再次出现,我要删除该键的整个值。
这是字典本节之后的样子,条目被划掉(删除)
注意Ruby如何出现两次。很好,因为我只需要确保每个“姓氏”都是唯一的即可。每个“ RightName”都可以重复。
我试图用str.split创建一个单独的名称数组。我不确定如何使用正则表达式来过滤和删除重复项。 坦率地说,我不知道我将如何实现这一目标。
答案 0 :(得分:2)
您可以这样做:
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
是保存数据的字典。
答案 1 :(得分:0)
这是一种可行的方法:
# 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'}