python - 如何从有序字典中选择最佳对?

标签 python numpy dictionary tuples ordereddictionary

我正在尝试将字符串映射到最合适的匹配字符串。我有一个与每个映射相关的置信度分数。我订购了这些映射,以便很好地了解可以观察到多少个 match_string 的重复映射。有序字典如下:

OrderedDict([(('access', 0.9997727), 'アクセス'),
             (('address', 0.44976854), 'お問い合せ先'),
             (('address', 0.99939954), '会社所在地'),
             (('address', 0.99950135), '勤務地'),
             (('app_condition', 0.33275154), '祝'),
             (('app_condition', 0.7852746), '勤務期間'),
             (('app_condition', 0.8870019), '社員登用実績多数'),
             (('app_condition', 0.9899178), '資格・スキル'),
             (('cname', 0.9822838), '会社名'),
             (('companydescr', 0.44985813), '経度'),
             (('feature', 0.69835746), '待遇・福利厚生'),
             (('feature', 0.8646633), 'メリット'),
             (('feature', 0.9998708), '特徴'),
             (('hiretype', 0.9998646), '雇用形態_職種ヒント'),
             (('jd', 0.42525598), '応募方法'),
             (('jd', 0.5210456), '生活スタイルに合わせて働けます'),
             (('jd', 0.7155549), '応募後のプロセス'),
             (('jd', 0.99901605), '仕事内容'),
             (('occup', 0.6487035), '事業内容'),
             (('occup', 0.91239053), '休日・休暇'),
             (('occup', 0.94584364), 'トップ'),
             (('occup', 0.96194524), '掲載URL'),
             (('occup', 0.9865232), 'CMS分類職種'),
             (('salary', 0.69874144), '緯度'),
             (('salary', 0.9436217), '取得日'),
             (('salary', 0.97082114), '交通費'),
             (('salary', 0.9999827), '給与'),
             (('title', 0.999959), 'タイトル'),
             (('workhours', 0.99996305), '勤務曜日・時間'),
             (('workhours', 0.9999968), '時間帯'),
             (('workhours', 0.9999995), '勤務時間')])

我想根据这些多重映射中的置信度分数选择最佳匹配并创建一个新字典,例如:

{
'access':'アクセス'
'address':'勤務地'
.
.
.
'workhours':'勤務時間'
}

我怎样才能做到这一点? 有序dict的key是一个元组,value是一个字符串。

最佳答案

如果您的字典已经按置信度分数排序,您可以使用字典理解:

d = OrderedDict([(('access', 0.9997727), 'アクセス'),
             (('address', 0.44976854), 'お問い合せ先'),
             (('address', 0.99939954), '会社所在地'),
             (('address', 0.99950135), '勤務地'),
...
])
result = {
    key[0]: val for key, val in d.items()
}
print(result)

这相当于:

result = {
   'access': 'アクセス',
   'address': 'お問い合せ先',
   'address': '会社所在地',
   'address': '勤務地',
   ...
}

由于字典已排序,您将只保留最后一个值,即得分最高的值。所以最后它就像在做:

result = {
   'access': 'アクセス',
   #'address': 'お問い合せ先',
   #'address': '会社所在地',
   'address': '勤務地',
   ...
}

它给你你想要的。

关于python - 如何从有序字典中选择最佳对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68692467/

相关文章:

Python - 如何正确设置类的层次结构?

python - Numpy 选择懒版本

python - 在 print 语句中连接值

python - R `summary` python中最接近的等价函数

python - 当我在内部使用两个循环时,如何提高算法的效率?

如果输入图像和输出图像已知,Python找到卷积核

ios - 在 Swift 4 中使用字典填充 UITableView 数据

python - 什么是多维字典?

python - 将一个 python 字典中的键映射到另一个字典的确切值

python - TF LSTM 多步预测似乎是错误的