比较列表的Python字典中的值

比较列表的Python字典中的值,第1张

概述我有一个列表字典,数字作为键,字符串列表作为值.例如., my_dict = { 1: ['bush', 'barck obama', 'general motors corporation'], 2: ['george bush', 'obama'], 3: ['general motors', 'george w. bush']} 我想要的是比较每个列表中的每个项目 我有一个列表的字典,数字作为键,字符串列表作为值.例如.,

my_dict = {    1: ['bush','barck obama','general motors corporation'],2: ['george bush','obama'],3: ['general motors','george w. bush']}

我想要的是比较每个列表中的每个项目(对于每个键),如果该项目是另一个项目的子字符串 – 将其更改为更长的项目.所以,这是一种非常糟糕的共识解决方案.

无法真正地围绕着如何做到这一点.
这是我的想法的伪代码:

for key,value in dict:    for item in value:        if item is substring of other item in any other key,value:            item = other item

所以我的词典最终会看起来像这样:

my_dict = {    1: ['george w. bush',2: ['george w. bush','barck obama'],3: ['general motors corporation','george w. bush']}

对不起,如果我没有表达出明显的问题.

解决方法 这是一个列表字典的事实是无关紧要的.有些字符串必须根据其他字符串进行修改.

这些是字符串:

all_strings = [s for string_List in my_dict.values() for s in string_List]

要替换字符串:

def expand_string(s,all_strings):    # compare words    matches = [s2 for s2 in all_strings               if all(word in s2.split() for word in s.split())]    if matches:        # find longest result        return sorted(matches,key=len,reverse=True)[0]    else:        # this wont't really happen,but anyway        return s

要替换一切:

result = {k: [expand_string(s,all_strings) for s in v]          for k,v in my_dict.items()}
总结

以上是内存溢出为你收集整理的比较列表的Python字典中的值全部内容,希望文章能够帮你解决比较列表的Python字典中的值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存