Python 将字符串赋值给字典后转成元组

Max*_*Max 13 python

我有一个非常奇怪的python问题。我已经问过几位同事,他们都不知道这是怎么发生的以及如何解决的。

我有一个从 API 调用中收到的字符串的浅字典,我想将其中的一些值分配给一个新的字典。

这就是第一个 dict 的样子。只是一堆字符串: 这就是第一个 dict 的样子。 只是一堆字符串

我将 dict1 中的一些值分配给 dict2 中的一些键。非常基础

    dict2={}
    dict2['access_key'] = dict1['access_key']
    dict2['secret_access_key'] = dict1['secret_access_key'],
    dict2['session_token'] =dict1['session_token'],
    dict2['region'] = dict1['region']
Run Code Online (Sandbox Code Playgroud)

然后发生这种情况。“秘密访问密钥”和“session_token”的值被转换成元组。“access_key”和“region”仍然是字符串 然后发生这种情况。 “秘密访问密钥”和“session_token”的值被转换成元组。 “access_key”和“region”仍然是字符串

我已经尝试将值初始化为字符串,访问元组的第一个条目并将值转换为字符串。所有这一切都没有改变任何事情。似乎该值被分配得很好,然后发生了一些奇怪的事情,将它变成了一个元组

这是我的解释器设置的屏幕截图。我正在使用 Python 3.6 这是我的解释器设置的屏幕截图。 我正在使用 Python 3.6

我真的为这个疯狂:-/ 任何帮助将不胜感激

Pat*_*l75 25

在两次调用的末尾有尾随逗号。这就是字符串被转换为元组的原因。

  • 你说得对:-D 非常感谢。该死的那些星期一早上 (2认同)

Mar*_*ite 5

亲爱的朋友,你遇到这个问题的原因是 Python 元组是用逗号标识的。

你可以试试这个代码

a = 1, 
print(a,type(a))
b = 1
print(b,type(b))
Run Code Online (Sandbox Code Playgroud)

所以我将您的代码更新为:

dict2={}
dict2['access_key'] = dict1['access_key']
# please notes the end !
# dict2['secret_access_key'] = dict1['secret_access_key'],
# dict2['session_token'] =dict1['session_token'],
# above is the origin code
dict2['secret_access_key'] = dict1['secret_access_key']
dict2['session_token'] =dict1['session_token']
dict2['region'] = dict1['region']
Run Code Online (Sandbox Code Playgroud)

我认为这会有所帮助!