如何将含字典的元组转换为字典并访问其键值对?
解决包含单个字典的元组转字典的ValueError问题
错误原因
你用dict(inputTuple)报错,是因为dict()构造函数需要的是由键值对组成的可迭代对象(比如[(key1, val1), (key2, val2)]这种格式),但你的元组里装的是一个完整的字典,不是键值对序列,所以触发了ValueError。
不用索引的转换方法
方法1:元组解包
利用Python的元组解包语法,直接取出元组里的字典:
inputTuple = ({'mobile': '91245555555', 'email': 'xyz@gmail.com', 'name': 'xyz', 'app_registration': 1},) print(type(inputTuple)) # <class 'tuple'> # 元组解包,逗号不能少,用来标识解包单个元素的元组 my_dict, = inputTuple print(my_dict) # {'mobile': '91245555555', 'email': 'xyz@gmail.com', 'name': 'xyz', 'app_registration': 1} # 获取各个字段 mobile = my_dict.get("mobile") email = my_dict.get("email") name = my_dict.get("name") print(mobile) print(email) print(name)
方法2:遍历元组
因为元组只有一个元素,遍历一次就能拿到里面的字典,完全不用索引:
inputTuple = ({'mobile': '91245555555', 'email': 'xyz@gmail.com', 'name': 'xyz', 'app_registration': 1},) print(type(inputTuple)) # <class 'tuple'> my_dict = None for item in inputTuple: my_dict = item break # 因为只有一个元素,拿到就退出循环 print(my_dict) # {'mobile': '91245555555', 'email': 'xyz@gmail.com', 'name': 'xyz', 'app_registration': 1} # 获取字段 mobile = my_dict.get("mobile") email = my_dict.get("email") name = my_dict.get("name") print(mobile) print(email) print(name)
一次性获取所有键值对
如果想直接拿到所有键值对,可以用字典的items()方法:
for key, value in my_dict.items(): print(f"{key}: {value}")
内容的提问来源于stack exchange,提问作者user18578733
相关产品推荐
相关产品推荐

