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 字典转元组问题如何解决?

11 回复

贴上去代码乱了,不好意思。


直接上代码,这是最清楚的:

# 情况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

谢谢大佬

回到顶部