Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 交换字典的内容_Python_Dictionary - Fatal编程技术网

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在问题中指定的约束条件。