所以我有两个字典,分别叫做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')}