Python3:将字典键从字符串更改为字符串元组

时间:2017-12-02 10:39:42

标签: python python-3.x dictionary

说我得了一个字典:

  

{'我喜欢':14,'你喜欢':12,'他喜欢':2}

我想换成像:

  

{('我','喜欢'):14,('你','喜欢'):12。 ( '他', '喜欢'):2}

所以我想将dict表单字符串的键更改为字符串元组。 我试着去做:

  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
         ^

但我得到了:

IncID

最有效的方法是什么?

4 个答案:

答案 0 :(得分:2)

您可以在字典理解中执行此操作:

d = {'I like': 14, 'you like': 12, 'he likes': 2}
new_d = {tuple(k.split()): v for k, v in d.items()}

new_d

输出:

{('I', 'like'): 14, ('he', 'likes'): 2, ('you', 'like'): 12}

答案 1 :(得分:2)

您只需要内置tuple()

source = {'I like': 14, 'you like': 12, 'he likes': 2}

target = { tuple(k.split()):source[k] for k in source}

print(target)

输出:

{('I', 'like'): 14, ('you', 'like'): 12, ('he', 'likes'): 2}

P.S。

请勿将dict用作变量名称。

答案 2 :(得分:1)

您可以使用词典理解来解决这个问题:

>>> 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}

答案 3 :(得分:0)

您可以采用两种方式:

  

数据:

your_data={'I like': 14, 'you like': 12, 'he likes': 2}
  

一线解决方案:

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}