繁体   English   中英

python - 字典中有多个相同的键

[英]python - more than one identical key in dict

这是我的代码

#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

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

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

不允许使用包/库

我可以使用类吗?

谢谢

我想要的是最大值

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

if month in myCalender.keys():

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

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

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

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

如果是,则将新值附加到 dict 内的列表中

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

这是表示数据的一种方式,因此它是保留所有原始数据的合法 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]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM