Python 交换字典的内容
我有一本字典,里面的键和值可以互换。例如:Python 交换字典的内容,python,dictionary,Python,Dictionary,我有一本字典,里面的键和值可以互换。例如: dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi", "phoenix":"arizona"} 输出应为: {"indiana":"indianapolis", "ohio":"columbus", "mississippi":"jackson", "arizona":"phoenix"} 以下是我尝试过的,但限制条件是只应使用sorted(
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
输出应为:
{"indiana":"indianapolis", "ohio":"columbus", "mississippi":"jackson",
"arizona":"phoenix"}
以下是我尝试过的,但限制条件是只应使用sorted()
,split()
函数,而不应使用其他内置函数(如keys()
,values()
,items()
,lambda
)。我真的不知道如何继续。有人能帮忙吗?我不熟悉字典
def interchange(input_dict):
temp = {}
dic = input_dict
for i in dict:
temp[i[1]] = i[0]
return temp_dic
使用听写理解:
>>> dic = {"indianapolis":"indiana", "columbus":"ohio",
... "jackson":"mississippi", "phoenix":"arizona"}
>>> {dic[key]: key for key in dic}
{'ohio': 'columbus', 'mississippi': 'jackson',
'arizona': 'phoenix', 'indiana': 'indianapolis'}
>>> dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi", "phoenix":"arizona"}
>>> {dic[k]:k for k in sorted(dic)}
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
只能使用.sorted()
,.split()
函数
使用排序
和字典理解:
>>> dic = {"indianapolis":"indiana", "columbus":"ohio",
... "jackson":"mississippi", "phoenix":"arizona"}
>>> {dic[key]: key for key in dic}
{'ohio': 'columbus', 'mississippi': 'jackson',
'arizona': 'phoenix', 'indiana': 'indianapolis'}
>>> dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi", "phoenix":"arizona"}
>>> {dic[k]:k for k in sorted(dic)}
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
sorted
按排序顺序返回字典的键,尽管最终dict的顺序是任意的。上述代码相当于:
>>> sorted(dic)
['columbus', 'indianapolis', 'jackson', 'phoenix']
>>> new_dic = {}
>>> for k in sorted(dic):
... new_dic[dic[k]] = k
...
>>> new_dic
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
更新:
def interchange(input_dict):
return {input_dict[k]:k for k in sorted(input_dict)}
...
>>> interchange(dic)
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = dict(zip(dic.values(),dic.keys()))
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = {}
for key, item in dic.iteritems():
newDict.update({item: key})
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
一些不错的选择:
def interchange(input_dict):
return {input_dict[k]:k for k in sorted(input_dict)}
...
>>> interchange(dic)
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = dict(zip(dic.values(),dic.keys()))
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = {}
for key, item in dic.iteritems():
newDict.update({item: key})
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
输出:
def interchange(input_dict):
return {input_dict[k]:k for k in sorted(input_dict)}
...
>>> interchange(dic)
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = dict(zip(dic.values(),dic.keys()))
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = {}
for key, item in dic.iteritems():
newDict.update({item: key})
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
说明:
def interchange(input_dict):
return {input_dict[k]:k for k in sorted(input_dict)}
...
>>> interchange(dic)
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = dict(zip(dic.values(),dic.keys()))
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = {}
for key, item in dic.iteritems():
newDict.update({item: key})
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
zip()
返回元组列表(字典),zip的参数按顺序颠倒
没有python方法:
def interchange(input_dict):
return {input_dict[k]:k for k in sorted(input_dict)}
...
>>> interchange(dic)
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = dict(zip(dic.values(),dic.keys()))
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = {}
for key, item in dic.iteritems():
newDict.update({item: key})
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
输出:
def interchange(input_dict):
return {input_dict[k]:k for k in sorted(input_dict)}
...
>>> interchange(dic)
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = dict(zip(dic.values(),dic.keys()))
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
dic = {"indianapolis":"indiana", "columbus":"ohio", "jackson":"mississippi",
"phoenix":"arizona"}
newDict = {}
for key, item in dic.iteritems():
newDict.update({item: key})
print newDict
{'ohio': 'columbus', 'mississippi': 'jackson', 'arizona': 'phoenix', 'indiana': 'indianapolis'}
非常简单
tuple_list = zip(dic.values(),dic.keys())
Result = dict(tuple_list)
将产生所需的输出
{'arizona': 'phoenix',
'indiana': 'indianapolis',
'mississippi': 'jackson',
'ohio': 'columbus'}
编辑
单线解
{ dic[Key]:Key for Key in list(dic) }
此问题中显示了另一种方法:谢谢,但我不应该使用.items()或.iteritems()。这不是内置函数。谢谢,但我不应该使用.items()或.iteritems()。这不是内置的功能。谢谢。但我如何将其转换为“def interchange(input_dict)”函数,以便输入dic并提供一个交换字典?@Pramod,Just
def interchange(input_dict):返回{input_dict[key]:key for key in input_dict}
谢谢。但我如何将其转换为“def interchange(input_dict)”函数,以便输入dic并提供交换字典?您甚至需要使用排序的?难道{input_dict[k]:input_dict}中的k代表k不会给出相同的结果吗?sorted()
在这里没有什么意义;毕竟,输出是一本字典。唯一的区别是如果输入字典中有重复的值;然后由插入顺序确定输出中的键。但即便如此,这也取决于具体的Python实现;规范没有说明在dict中插入了什么顺序键。实际上,它将是最后一个插入的键,但这不是语言规范所要求的。OP不能使用.values()
和.keys()
。这些是OP在问题中指定的约束条件。