Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典中查找与一个字符不同的字符串_Python_Dictionary - Fatal编程技术网

Python 在字典中查找与一个字符不同的字符串

Python 在字典中查找与一个字符不同的字符串,python,dictionary,Python,Dictionary,我有一个字典,其中包含字符串作为键,以及它们作为值出现在文件中的次数。我正试图找到一种方法来查找相差一个字符的字符串,然后从字典中删除计数最低的字符串 import collections dic = {'ATAA':5, 'GGGG':34, 'TTTT':34, 'AGAA':1} del dic[list({k: v for k, v in sorted({k:v for k,v in dic.items() if len(set(k)) == 2}.items(), key=lambda

我有一个字典,其中包含字符串作为键,以及它们作为值出现在文件中的次数。我正试图找到一种方法来查找相差一个字符的字符串,然后从字典中删除计数最低的字符串

import collections
dic = {'ATAA':5, 'GGGG':34, 'TTTT':34, 'AGAA':1}
del dic[list({k: v for k, v in sorted({k:v for k,v in dic.items() if len(set(k)) == 2}.items(), key=lambda item: item[1])}.keys())[0]]
由此:

dictionary = {'ATAA':5, 'GGGG':34, 'TTTT':34, 'AGAA':1}
为此:

new_dictionary = {'ATAA':5, 'GGGG':34, 'TTTT':34}

这本字典太大了,所以我正试图找到一个有效的方法来解决这个问题。任何关于如何解决这个问题的建议都将不胜感激。

这将是我自制的食谱。首先,我们收集具有唯一字符的所有关键点。然后我们按键对这本新词典进行排序。在您的情况下,我们将以
{'AGAA':1,'ATAA':5}
结束,这意味着我们可以从字典中删除
AGAA

import collections
dic = {'ATAA':5, 'GGGG':34, 'TTTT':34, 'AGAA':1}
del dic[list({k: v for k, v in sorted({k:v for k,v in dic.items() if len(set(k)) == 2}.items(), key=lambda item: item[1])}.keys())[0]]
输出

{'ATAA': 5, 'GGGG': 34, 'TTTT': 34}

现在还有更多。如果您有一些具有类似值的键会怎么样。上述代码将不起作用。我花了最后几分钟准备了一些新代码

我会把它分解

import collections
from collections import defaultdict
#----------
#This will give us {'ATAA': 5, 'AGAA': 5}, we have located the different keys
dictionary = {'ATAA':5, 'GGGG':34, 'TTTT':34, 'AGAA':5}
lowest =  {k: v for k, v in sorted({k:v for k,v in dictionary.items() if len(set(k)) == 2}.items(), key=lambda item: item[1])}
#----------
#This will give us ['ATAA', 'AGAA']. Checks for all keys with similar values.
grouped = defaultdict(list)
for key in lowest:grouped[lowest[key]].append(key)
simKeys = min(grouped.values(), key=len)
#----------
#This will check if we have to delete many keys or just one
if len(simKeys) > 1:x = {k:v for k,v in dictionary.items() if k not in simKeys}
if len(simKeys) == 1:del dictionary[list(lowest.keys())[0]]
#----------

看一看这篇文章:看一看感谢好友!如果我有以下字典怎么办:dictionary={'ATAA':53'GGGG':34'GCGG':3'AGAA':5}。然后我想要以下输出:dictionary={'ATAA':53'GGGG':34}。在解决方案中,您只进行了一次比较。为什么会这样
GCGG
是最低的不同键。我的输出是
{'ATAA':53,'GGGG':34,'AGAA':5}