Python 字典转元祖问题

2018-12-12 19:46:41 +08:00
 305835227fadf

求各位大佬帮忙,本人新手遇到问题有点烦躁,如下:

需求如下:

Python2.7

a = {"beijing":20,"shanghai":30}

想要得到:

b = (["beijing","shanghai"],[20,30])

并且希望元祖 b 中我想 2 个列表内元素的值都能和字典 a 中相匹配

分割线*************

我自己的瞎搞的几个解法,不知道对不对,如下:

第一个方法: a = {"beijing":20,"shanghai":30} cc = ( [a1 for a1 in a.viewkeys()],[a2 for a2 in a.viewvalues()] ) 看起来结果是对的,但是不确定当 a 内的元素增多时是否结果还是对的。

第二个方法: a = {"beijing":20,"shanghai":30} cc = (a.keys(),a.values()) 看起来结果和第一个方法是一样的,但是也不确定当 a 内的元素增多时是否结果还是对的。

第三个方法: In [124]: a Out[124]: {'beijing': 20, 'shanghai': 50}

In [125]:

In [125]: a1 = []

In [126]: a2 = []

In [127]: for x,y in a.iteritems(): ...: a1.append(x) ...: a2.append(y) ...:

In [128]: cc = (a1,a2)

In [129]: cc Out[129]: (['beijing', 'shanghai'], [20, 50])

希望各位大佬多指点,非常感谢!

1501 次点击
所在节点    Python
10 条回复
305835227fadf
2018-12-12 19:50:31 +08:00
贴上去代码乱了,不好意思。
aijam
2018-12-12 19:52:33 +08:00
tuple(map(list, zip(*a.items())))
aijam
2018-12-12 19:55:03 +08:00
第二个方法是最好的啦
305835227fadf
2018-12-12 19:55:24 +08:00
@aijam 我的字典 a 未来会有很多数据,这个解法可以保证随着数据量增大元祖内 2 个 list 都是对应有序的吗大佬
aijam
2018-12-12 19:56:43 +08:00
要保证顺序的话按照我的应该可以
305835227fadf
2018-12-12 19:59:07 +08:00
@aijam 我不希望出现这样的数据
a = {'beijing': 20, 'shanghai': 50}
c = (['beijing', 'shanghai'], [50, 20])
aijam
2018-12-12 20:00:11 +08:00
嗯,那就用我的,没问题
305835227fadf
2018-12-12 20:01:20 +08:00
@aijam 第二个方法我怕出现刚才我说的那个问题
aijam
2018-12-12 20:03:55 +08:00
我本来以为需要对应所以发了 2 楼,后来又看了一眼你写的还以为不要对应所以发了 3 楼,最后发现你想要对应。:D
305835227fadf
2018-12-12 20:07:15 +08:00
@aijam 谢谢大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/517008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX