我当前的代码很难看,因此我正在寻找更通用的解决方案:
我有以下python字典示例,值为字符串:
example_dict = {'key1':'AAAAAAAAAAA','key2':'BBBBAAABBBB', 'key3':'CAAAAAAACCC','key4':'DDDAADADAAA'}
请注意,字符串长度相同,仅包含大写字母:
'AAAAAAAAAAA'
'BBBBAAABBBB'
'CAAAAAAACCC'
'DDDAADADAAA'
我想对这些字符串进行迭代,并找到字符串相同的索引。以下方法是我没有做的:
for i in range(11):
if (example_dict['key1'][i]==example_dict['key2'][i]==example_dict['key3'][i]==example_dict['key4'][i]):
print(i)
这是有效的,正如我们看到的索引4和索引6中所有字符串都包含"A"
问题是,我想和其他字典做同样的字符串比较,它们有不同的键名(和更多/更少的项)
例如,如果我使用dictionary ex2 = {'one':'AAAAA', 'two':'ABBBA'}
,我需要将上面的if语句更改为
if (ex2['one'][i]==ex2['two'][i]):
是否可以在不显式命名键的情况下比较python字典值?当然,上面的问题可能非常难看——更好的问题可能是,有没有更通用的方法来完成这项任务
这对你有用吗
解决方案存在于
zip
和list
理解中:结果:
zip(*example_dict.values())
提供了以下结果,这些结果按索引将每个键很好地排列起来:现在需要做的就是比较这些元组中的每个元组只有一个公共值(
len(set(x))==1
),并将索引返回到list
enumerate
提供值(x
,压缩的tuple
)和索引(i
)相关问题 更多 >
编程相关推荐