Python3:将字典键从字符串更改为字符串元组
假设我得到了一份口述: {‘我喜欢’:14,‘你喜欢’:12,‘他喜欢’:2} 我想变成这样: {(‘我’,‘喜欢’):14,(‘你’,‘喜欢’):12。(‘他’,‘喜欢’):2} 所以我想把dict表单字符串的键改成字符串的元组。 我试图做到:Python3:将字典键从字符串更改为字符串元组,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,假设我得到了一份口述: {‘我喜欢’:14,‘你喜欢’:12,‘他喜欢’:2} 我想变成这样: {(‘我’,‘喜欢’):14,(‘你’,‘喜欢’):12。(‘他’,‘喜欢’):2} 所以我想把dict表单字符串的键改成字符串的元组。 我试图做到: from ast import literal_eval as make_tuple ... d = {make_tuple(k): d[k] for k in d} 但我得到了: File "/usr/lib/python3.5/ast
from ast import literal_eval as make_tuple
...
d = {make_tuple(k): d[k] for k in d}
但我得到了:
File "/usr/lib/python3.5/ast.py", line 35, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 1
of the
^
文件“/usr/lib/python3.5/ast.py”,第35行,在parse中
返回编译(源、文件名、模式、仅PyCF\u AST)
文件“”,第1行
的
^
做这件事最有效的方法是什么?你可以在字典理解中这样做:
d = {'I like': 14, 'you like': 12, 'he likes': 2}
new_d = {tuple(k.split()): v for k, v in d.items()}
new_d
>>> original = {'I like': 14, 'you like': 12, 'he likes': 2}
>>> new_d = {tuple(k.split()): v for k,v in original.items()}
>>> new_d
{('I', 'like'): 14, ('you', 'like'): 12, ('he', 'likes'): 2}
输出:
您只需要内置的
tuple()
:
输出:
{('I', 'like'): 14, ('you', 'like'): 12, ('he', 'likes'): 2}
p、 美国
不要使用
dict
作为变量名。您可以使用字典理解解决此问题:
d = {'I like': 14, 'you like': 12, 'he likes': 2}
new_d = {tuple(k.split()): v for k, v in d.items()}
new_d
>>> original = {'I like': 14, 'you like': 12, 'he likes': 2}
>>> new_d = {tuple(k.split()): v for k,v in original.items()}
>>> new_d
{('I', 'like'): 14, ('you', 'like'): 12, ('he', 'likes'): 2}
您可以使用两种方法: 数据: 单线解决方案: 输出: 详细解决方案: 上述听写理解与以下内容相同:
final_dict={}
for key,value in your_data.items():
final_dict[tuple(key.split())]=value
print(final_dict)
输出:
这是一个列表,
['I like':14,'你喜欢',12,'他喜欢',2]
不是dict.@amittripath是的,这是我显示我的dict的方式。现在我编辑了这个问题以显示它的副词。@M.T我读到items制作了dict的附加副本,我希望它有效。不,.items()
生成一个视图,不是副本。如果d是你的字典,这是你的答案:{{{}.format(tuple(k.split()):v代表k,v在d.items()}
我认为这是错误的,因为他想要一个包含两个元素的tuple:`('I','like')。
print({tuple(key.split()):value for key,value in your_data.items()})
{('I', 'like'): 14, ('he', 'likes'): 2, ('you', 'like'): 12}
final_dict={}
for key,value in your_data.items():
final_dict[tuple(key.split())]=value
print(final_dict)
{('I', 'like'): 14, ('he', 'likes'): 2, ('you', 'like'): 12}