【问题标题】:How to interchange keys and values in a dict? [duplicate]如何在字典中交换键和值? [复制]
【发布时间】:2015-04-07 10:25:45
【问题描述】:

我想交换给定字典中的键和值。例如:

dict = {1:'sandeep', 2: 'suresh', 3: 'pankaj'}

会变成:

dict1 = {'sandeep': 1, 'suresh': 2, 'pankaj': 3}

【问题讨论】:

  • {val: key for key, val in dict.items()}?但是您不应该将自己的字典命名为 dict,并且您会始终拥有唯一的、可散列的值吗?

标签: python python-3.x dictionary


【解决方案1】:

使用zip 可能比字典理解更好:

dict1 = dict(zip(dict1.values(), dict1.keys())) # better for beginners

【讨论】:

  • 确保您的原始字典是 dict1 而不是 dict
  • 初学者一般不太熟悉推导式,但大多数人都熟悉一些内置方法。
  • 我认为你不应该做出这样的假设。即使是真的,初学者也应该熟悉它们。
【解决方案2】:
In [45]: d = {1:'sandeep',2 : 'suresh', 3: 'pankaj'}

In [46]: {(v, k) for k,v in d.iteritems()}
Out[46]: {'pankaj': 3, 'sandeep': 1, 'suresh': 2}

注意使用d作为变量名,而不是内置的dict

另请注意,您不能保证唯一性,并且可能会丢失条目:

In [47]: d = {1:'sandeep',2 : 'suresh', 3: 'pankaj', 4:'suresh'}

In [48]: {(v, k) for k,v in d.iteritems()}
Out[48]: {'pankaj': 3, 'sandeep': 1, 'suresh': 4}

【讨论】:

  • 你为什么不直接使用字典理解? {v: k for k,v in d.iteritems()}
  • @MJeffryes 是的,你是对的,这样更好。相应地编辑了答案。
  • 根据标签“python-3.xiteritems应该换成items
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多