如何使用python dict切换值和键?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python dict切换值和键?相关的知识,希望对你有一定的参考价值。
我的意见是:
files = {
'Input.txt': 'Randy',
'Code.py': 'Stan',
'Output.txt': 'Randy'
}
我希望输出为:
{'Randy':['Input.txt','Output.txt'], 'Stan':['Code.py']}
基本上这是这个qazxsw poi的另一个方向
这是我试过的:
switch key and values in a dict of lists
但它不起作用。我得到dictresult= {}
for key,value in files.items():
dictresult[key]=value
dictresult[value].append(key)
答案
这是一个简单的方法,我们迭代你的原始字典KeyError: 'Randy'
的keys
和values
,并为每个值创建列表,以附加对应于该值的所有键。
files
另一答案
您的代码存在一些问题。
让我们来复习:
- 首先,您正在获取密钥错误,因为您尝试将值附加到不存在的密钥。为什么?因为在你之前的陈述中你为dict [key]添加了一个值,现在你正试图访问/追加dict [value]。
files = { 'Input.txt': 'Randy', 'Code.py': 'Stan', 'Output.txt': 'Randy' } dictresult= {} for k, v in files.items(): if v not in dictresult: dictresult[v] = [k] else: dictresult[v].append(k) print(dictresult) # -> {'Randy': ['Output.txt', 'Input.txt'], 'Stan': ['Code.py']}
- 您正在为新生成的密钥分配值,而不进行任何检查。每个新值都会覆盖它。
dictresult[key]=value
- 然后,您尝试使用错误的密钥将新值附加到字符串。
您可以通过以下代码实现您的目标:
dictresult[value].append(key)
它将输出:
d = {}
for key,value in files.items():
if value in d:
d[value].append(key)
else:
d[value] = [key]
print(d)
它是如何/为什么有效?
让我们来复习:
- if条件检查该键是否已存在于字典中。在字典上迭代时,它只返回它的键,而不是像dict.items()那样的键值对
- 如果键在那里,我们只需将当前值附加到它。
- 在其他情况下,如果该键不存在,我们将新键添加到字典中,但我们通过将其转换为列表来执行此操作,否则将插入字符串作为值,而不是列表,您将无法追加它。
另一答案
尝试使用{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}
-
defaultdict
这将假设字典中的每个项目都有一个空列表,因此追加不会失败
另一答案
您可以检查dictresult中是否存在作为键的值
喜欢
from collections import defaultdict
dictresult= defaultdict(list)
for key,value in files.items():
dictresult[value].append(key)
另一答案
dictresult= {}
for key,value in files.items():
if not value in dictresult: dictresult [value]=[]
dictresult[value].append(key)
以上是关于如何使用python dict切换值和键?的主要内容,如果未能解决你的问题,请参考以下文章