Python 字典转元组问题如何解决?
求各位大佬帮忙,本人新手遇到问题有点烦躁,如下:
需求如下:
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])
希望各位大佬多指点,非常感谢!
Python 字典转元组问题如何解决?
贴上去代码乱了,不好意思。
直接上代码,这是最清楚的:
# 情况1:把字典的键(key)转成元组
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_tuple = tuple(my_dict.keys())
print(keys_tuple) # 输出:('a', 'b', 'c')
# 情况2:把字典的值(value)转成元组
values_tuple = tuple(my_dict.values())
print(values_tuple) # 输出:(1, 2, 3)
# 情况3:把字典的键值对(item)转成元组
items_tuple = tuple(my_dict.items())
print(items_tuple) # 输出:(('a', 1), ('b', 2), ('c', 3))
# 情况4:把整个字典转成包含键值对的元组(和情况3一样)
full_tuple = tuple(my_dict.items())
print(full_tuple) # 输出:(('a', 1), ('b', 2), ('c', 3))
简单说,用 tuple() 函数包裹字典的 .keys()、.values() 或 .items() 方法就行,看你要转什么。
总结:用tuple()包裹对应方法就行。
tuple(map(list, zip(*a.items())))
第二个方法是最好的啦
我的字典 a 未来会有很多数据,这个解法可以保证随着数据量增大元祖内 2 个 list 都是对应有序的吗大佬
要保证顺序的话按照我的应该可以
我不希望出现这样的数据
a = {‘beijing’: 20, ‘shanghai’: 50}
c = ([‘beijing’, ‘shanghai’], [50, 20])
嗯,那就用我的,没问题
第二个方法我怕出现刚才我说的那个问题
我本来以为需要对应所以发了 2 楼,后来又看了一眼你写的还以为不要对应所以发了 3 楼,最后发现你想要对应。:D
谢谢大佬

