python-dict中有多个相同的键

时间:2020-10-17 15:13:15

标签: python

这是我的代码

#this is for the max Day of a month, without leap year 
day_month = {'Janauary': 31, 'February':28, 'March':31, 'April':30, 'May':31, 'June':30, 'July':31, 'August':31, 'September':30, 'October':31, 'November':30, 'December':31}
#this dict i get as Input
myCalendar = {'April':30, 'July':10, 'May':20, 'February':29, 'August':31, 'August':13, 'August':21}
#this is the desired month to work with
month = 'August'

print(month in myCalendar) # it shows that month exists in myCalendar  
print(myCalendar[month]) # this give the value
print('')

for i in myCalendar:
    print(str(i) + ' ' + str(myCalendar[i]))

这些是输出

True
21

#result of for loop
April 30
July 10
May 20
February 29
August 21  #the problem is this one, I want to have the max value of those three values

对于8月,我有{'August':31,'August':13,'August':21}我想要的是最大值'August':31或更好的{'August':[13 ,21,31]}

我知道在Python Dict中只接受一个相同的键

不允许使用软件包/库

我可以上课吗?

谢谢

2 个答案:

答案 0 :(得分:0)

我想拥有的是最大价值

要处理这些类型的冲突,您首先要检查密钥是否已经存在

if month in myCalender.keys():

如果确实存在,您将使用两个输入的最大值重新声明它

myCalender[month] = max(myCalender[month], day_month[month] )

或更佳的{'August':[13,21,31]}

要执行此操作,请执行与上述相同的操作,以检查密钥是否已存在

如果这样做,则将新值附加到字典内的列表中

myCalender[month] = list(myCalender[month]).append(day_calender[month])

答案 1 :(得分:0)

这里是表示数据的一种方法,因此它是保留所有原始数据的合法Python代码:

myCalendar = [('April', 30), ('July',10), ('May',20), ('February',29), ('August', 31), ( 'August', 13), ('August', 21)]

如果这样做,则可以使用以下代码生成所需的结构:

myCalendar = [('April', 30), ('July',10), ('May',20), ('February',29), ('August', 31), ( 'August', 13), ('August', 21)]

myIndex = {}
for k, v in myCalendar:
    if k not in myIndex:
        myIndex[k] = []
    myIndex[k].append(v)

print(myIndex)

结果:

{'April': [30], 'July': [10], 'May': [20], 'February': [29], 'August': [31, 13, 21]}
相关问题