Python 翻页字典无法正常工作

Python 翻页字典无法正常工作,python,dictionary,Python,Dictionary,原始字典输出: import csv def partytoyear(): #this function associate the party; to the year it was served# party_in_power = {} with open("presidents.txt") as f: reader = csv.reader(f) for row in reader: party = ro

原始字典输出:

import csv



def partytoyear():     #this function associate the party; to the year it was served#
    party_in_power = {}
    with open("presidents.txt") as f:
        reader = csv.reader(f)
        for row in reader:
            party = row[1]
            for year in row[2:]:
                party_in_power[year] = party
    new_dict = {}
    for k, v in party_in_power.items():
        new_dict[v] = k
    print(new_dict)  
partytoyear()
我需要翻转键和值,因此我添加了以下代码块:

'1961': 'Democrat', '1962': 'Democrat', '1963': 'Democrat', '1964': 'Democrat', '1965': 'Democrat', '1966': 'Democrat', '1967': 'Democrat', '1968': 'Democrat', '1969': 'Republican', '1970': 'Republican', '1971': 'Republican', '1972': 'Republican', '1973': 'Republican', '1974': 'Republican', '1975': 'Republican', '1976': 'Republican', '1977': 'Democrat', '1978':
他们翻了,但现在我从字典里只得到了两个结果,而不是几十个。以下是输出:

new_dict = {}
    for k, v in party_in_power.items():
        new_dict[v] = k
    print(new_dict) 

有什么想法吗?它不是一直迭代for循环吗

由于多个键映射到原始字典中的相同值,因此反向字典中的每个键都需要映射到多个值。一个明智的方法是建立一个列表字典:

新宪法={‘民主党人’:[],‘共和党人’:[]} 对于第三方电源中的k、v项: 新词[v].附录 一个稍微简洁的解决方案是使用:

从集合导入defaultdict 新建目录=默认目录列表 对于第三方电源中的k、v项: 新词[v].附录
假设字典根据定义将每个键映射到一个值,那么你期望结果是什么?字典不能有重复的键。哦,好吧,所以我不可能切换它们?@helloimstupidypthonstudent你可以有列表形式的值:例如,{'democratic':['1961','1962','Republican':['2008',…}@helloimstupidpythonstudent如果切换的意思是将每个k->v关系更改为v->k关系,则无法切换它们。但是,您可以生成一个匹配每个值的键列表,形成两个v->[k1,k2,…kn]关系。那么列表中是否可能有一个字典?因此,如果我使用pop函数来弹出所有民主党人的值,它仍然可以工作?这是一个字典中的两个列表-不是一个列表中的字典-但是是的,你可以有这样的嵌套数据结构。如果你叫new_dict['democratic'].pop,那么你将从民主党人列表中弹出。
{'Democrat': '2012', 'Republican': '2008'}