从两个字典中查找公共键并从公共键返回新字典



所以我有两个字典,分别叫做results和results_2,它们的长度不同,设置如下:结果也明显短于Result_2:

result
{('CMS', 'LNT'): 0.8500276624334894,
('LNT', 'CMS'): 0.8500276624334894,
('LOW', 'HD'): 0.8502400376842035,
('HD', 'LOW'): 0.8502400376842036,
('SWKS', 'QRVO'): 0.8507993847326996,
...

result_2
{('CMS', 'CMS'): 1.0,
('CMS', 'LNT'): 0.7761431649456381,
('CMS', 'LOW'): 0.4476903306386938,
('CMS', 'HD'): 0.35617507290738476,
('CMS', 'SWKS'): 0.04797167063700858,
('CMS', 'QRVO'): -0.08844725271734241,
....

现在我想找到两个字典中所有的键并创建一个新的字典,只有重复的组合和它们的值

输出应该像这样:

result_combined
{('CMS', 'LNT'): 0.8500276624334894,
('CMS', 'LNT'): 0.7761431649456381,
....

我已经尝试使用以下代码,但我只得到一个空字典:

dict_sorted_2 = {}
for key_2, result_2 in results_2.items():

for key, result in results.items():

if key_2 == key:
dict_sorted[key_2] = result_2

abcd = dict(sorted(dict_sorted_2.items(), key=lambda item: item[1]))
abcd

[24]: {}

编辑:

这是我用来获取结果字典

的代码
results_2 = {}
for ticker1 in data_5d:
for ticker2 in data_5d:
if data_5d[ticker1].size == data_5d[ticker2].size:
corr = np.corrcoef(data_5d[ticker1]['%Percentage'], data_5d[ticker2]['%Percentage'])[0,1]
print(f"Correlation between {ticker1} and {ticker2}: {corr}")
results_2[(ticker1, ticker2)] = corr

巧合的是,dict.keys方法返回一个类集合对象,您可以对该对象执行类集合操作:

>>> a = {(1, 2): 'a', (3, 4): 'b'}
>>> b = {(3, 4): 'c', (5, 6): 'd'}
>>> a.keys() & b.keys()
{(3, 4)}

您可以从您喜欢的字典中选择值:

>>> {k: a[k] for k in a.keys() & b.keys()}
{(3, 4): 'b'}

{('CMS', 'LNT'): 0.8500276624334894,
('CMS', 'LNT'): 0.7761431649456381,

这是没有意义的预期结果,因为您不能在字典中有相同的键两次。也许你想要这个?

>>> {k: (a[k], b[k]) for k in a.keys() & b.keys()}
{(3, 4): ('b', 'c')}

相关内容

  • 没有找到相关文章

最新更新