gpt4 book ai didi

Python:在切换键和值时创建新字典

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:08 24 4
gpt4 key购买 nike

如果给我一个字典,其中以学生姓名为键,以他们精通的科目为一组字符串,我将如何创建一个新字典,以科目为键,并以每个精通的人为键一组中的那些科目?

抱歉,这是我第一次在这里提问,所以我不太确定如何包含函数片段。

最佳答案

使用 defaultdict使每个集合中的每个主题/值成为一个键,并将每个学生附加/添加到列表/集合中作为值。

s = {'Sherman':{'calculus', 'english'},
'Tyler': {'computers','history'},
'Kevin': {'chemistry','PE','geometry'},
'Joe': {'calculus','computers'},
'Bryan': {'nothing'},
'Steven': {'biology','research', 'algebra'}}

from collections import defaultdict
d = defaultdict(list)
for k,v in s.items(): # iterate over key/value tuples.
for sub in v: # get each subject in the set/value
d[sub].append(k) # add the students to a list and and make each subject a key
print(d)

defaultdict(<type 'list'>, {'calculus': ['Sherman', 'Joe'], 'biology': ['Steven'], 'algebra': ['Steven'], 'geometry': ['Kevin'], 'computers': ['Tyler', 'Joe'], 'research': ['Steven'], 'english': ['Sherman'], 'nothing': ['Bryan'], 'chemistry': ['Kevin'], 'PE': ['Kevin'], 'history': ['Tyler']})

如果你想设置为值使用 defaultdict(set) 和 .add 而不是追加:

from collections import defaultdict

d = defaultdict(set)
for k,v in s.items():
for sub in v:
d[sub].add(k)
print(d)
defaultdict(<type 'set'>, {'calculus': set(['Sherman', 'Joe']), 'biology': set(['Steven']), 'algebra': set(['Steven']), 'geometry': set(['Kevin']), 'computers': set(['Tyler', 'Joe']), 'research': set(['Steven']), 'english': set(['Sherman']), 'nothing': set(['Bryan']), 'chemistry': set(['Kevin']), 'PE': set(['Kevin']), 'history': set(['Tyler'])})

使用 defaultdict 意味着如果字典中不存在该键,它将被添加并追加或仅追加值(如果它已经存在),您可以使用 dict.setdefault 但 defaultdict 更有效。

关于Python:在切换键和值时创建新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com