首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速迭代三本字典?

快速迭代三本字典?
EN

Stack Overflow用户
提问于 2019-07-25 13:55:11
回答 4查看 123关注 0票数 0

我正在处理三本很大的字典,如下所示:

代码语言:javascript
运行
复制
dict_a = { ( 't','e' ) : [0.5,0.1,0.6],  ( 'a','b' ) : [0.2,0.3,0.9] }

dict_b = { ( 'a','b' ) : [0.1,0.5,0.3] , ( 't','e' ) : [0.6,0.1,0.6] }

dict_c = { ( 'a','b' ) : [0.1,0.5,0.3] , ( 't','e' ) : [0.6,0.5,0.6] }

我正在寻找这样的输出:

代码语言:javascript
运行
复制
    name    first_value       second_value  third_value

0   (t, e)  [0.5, 0.1, 0.6] [0.6, 0.1, 0.6] [0.6, 0.5, 0.6]
1   (a, b)  [0.2, 0.3, 0.9] [0.1, 0.5, 0.3] [0.1, 0.5, 0.3]

我试过的是:

代码语言:javascript
运行
复制
final_dict = {'name': [] , 'first_value' : [] ,'second_value': [] , 'third_value': [] }

for a,b in dict_a.items():
    for c,d in dict_b.items():
        for e,f in dict_c.items():
            if a==c==e:
                final_dict['name'].append(a)
                final_dict['first_value'].append(b)
                final_dict['second_value'].append(d)
                final_dict['third_value'].append(f)

这真的是没有效率和优化的方式来完成这个任务。我在考虑用熊猫。

如何以最小的时间复杂度完成此任务?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-25 13:57:45

试试看:-

代码语言:javascript
运行
复制
df = pd.DataFrame([dict_a, dict_b, dict_c], index = ['first_value', 
'second_value', 'third_value']).T
df['names'] = df.index
df.index = [0, 1]
print(df)

产出:-

代码语言:javascript
运行
复制
       first_value     second_value      third_value   names
0  [0.2, 0.3, 0.9]  [0.1, 0.5, 0.3]  [0.1, 0.5, 0.3]  (a, b)
1  [0.5, 0.1, 0.6]  [0.6, 0.1, 0.6]  [0.6, 0.5, 0.6]  (t, e)
票数 1
EN

Stack Overflow用户

发布于 2019-07-25 14:00:38

因为这些是字典,所以只需要迭代一个。您可以使用该键从其他值中获取相应的值。

示例:

代码语言:javascript
运行
复制
for key, value in dict_a.items():
        final_dict['name'].append(key)
        final_dict['first_value'].append(value)
        final_dict['second_value'].append(dict_b[key])
        final_dict['third_value'].append(dict_c[key])
票数 4
EN

Stack Overflow用户

发布于 2019-07-25 13:57:48

不如:

代码语言:javascript
运行
复制
pd.DataFrame({i:d for i,d in enumerate([dict_a,dict_b,dict_c])} )

输出:

代码语言:javascript
运行
复制
                   0                1                2
a b  [0.2, 0.3, 0.9]  [0.1, 0.5, 0.3]  [0.1, 0.5, 0.3]
t e  [0.5, 0.1, 0.6]  [0.6, 0.1, 0.6]  [0.6, 0.5, 0.6]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57203704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档