Python数据结构,它将<non_substring_key,value>组合为唯一

Avi*_*ash 5 python algorithm dictionary class python-3.x

Python词典具有key独特性.但我正在努力编写(找到)支持以下内容的DS:

例1:

|------|-----------------|
| abc  | matched in abcD |
|------|-----------------|
| match| matched in abcD |
|------|-----------------|
| abc  | abc found again |
Run Code Online (Sandbox Code Playgroud)

如果下一个条目如下:

|-----|-----------------|                     
| abcd| matched in abcD |  ----> should replace first entry because abc is substring of abcd.
Run Code Online (Sandbox Code Playgroud)

所以条目/表应该是这样的

|------|-----------------|
| abcd | matched in abcD |
|------|-----------------|
| match| matched in abcD |
|------|-----------------|
| abc  | abc found again | 
Run Code Online (Sandbox Code Playgroud)

有什么建议 ?

可能的功能定义

def substring_value_confirm(keys, values):
    # implement as above
    return required_mapping

substring_value_confirm(["abc","match","abc","abcd"],["matched in abcD", "matched in abcD", "abc found again", "matched in abcD"])
Run Code Online (Sandbox Code Playgroud)

对于任何新的条目,首先value应该匹配,如果value存在,那么key将被检查如果一个key是其他的子串,那么更长的一个应该得到该位置.

例2:

|------|----|
| a    | 1  |
|------|----|
| b    | 2  |
|------|----|
| ba   | 3  |
Run Code Online (Sandbox Code Playgroud)

如果是新条目

|------|----|
| ab   | 1  |   ----> should replace first
|------|----|
| b    | 2  |   ----> should be discarded because already present
|------|----|
| ab   | 3  |   ----> will be new insertion
Run Code Online (Sandbox Code Playgroud)

所以结果条目/表应该是:

|------|----|
| ab   | 1  |
|------|----|
| b    | 2  |
|------|----|
| ba   | 3  |
|------|----|
| ab   | 3  |
Run Code Online (Sandbox Code Playgroud)