我到处尝试过阅读,似乎无法找到有效的答案......
练习是创建一个函数,该函数采用数字(0-6
)并返回星期的相应日期,星期日编号为0
。我是用字典做的。现在它想要相反的方式,但我尝试过的所有东西似乎都没有用,除了输入它。这里我的当前代码开始反向:
dayDict = {0: 'Sunday', 1:'Monday', 2:'Tuesday', 3:'Wednesday',
4:'Thursday', 5:'Friday', 6:'Saturday'}
def day_num(dayName):
if dayName == "Sunday":
return dayDict[dayName]
print(day_num("Sunday"))
每天会继续elif
。
答案 0 :(得分:2)
反向词典是一段简单的代码......一旦你知道如何。
day_num = {value: key for key, value in dayDict.iteritems()}
答案 1 :(得分:1)
dayNumDict = {v:k for k,v in dayDict.items()}
def day_num(dayName):
return dayNumDict[dayName]
如果您使用的是Python 3.x:
items = [[1, 'A'], [2, 'A'], [6, 'B'], [3, 'B'], [4, 'C'], [5, 'C'], [7, 'F']]
import itertools, operator, random
groups = [list(g) for _, g in itertools.groupby(items, operator.itemgetter(1))]
random.shuffle(groups)
shuffled = [item for group in groups for item in group]
print(shuffled)
答案 2 :(得分:1)
你也可以用日期和数字来构建你的词典,比如
>>> days=['Sunday','Monday','Tuesday', 'Wednesday','Thursday','Friday', 'Saturday']
>>> dayDict=dict()
>>> for n,day in enumerate(days):
dayDict[n]=day
dayDict[day]=n
>>> dayDict
{0: 'Sunday', 1: 'Monday', 2: 'Tuesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Friday', 6: 'Saturday',
'Tuesday': 2, 'Thursday': 4, 'Friday': 5, 'Wednesday': 3, 'Saturday': 6, 'Sunday': 0, 'Monday': 1}
>>>
>>> dayDict[0]
'Sunday'
>>> dayDict["Friday"]
5
>>>
答案 3 :(得分:0)
所以听起来,你想要一个新的函数,它在周日 - 周六进行,并返回相应的数值。
我能想到的唯一方法是使用循环并测试所有字典选项,如下所示:
def getDayNumber(day):
for i in range(len(<dictionary>)):
if <dictionary>[i] == day.captialize():
return i
答案 4 :(得分:0)
因为你已经有了很多字典答案....在你的具体情况下,用Enum来解决它似乎更容易解决。
from enum import IntEnum
DOW = IntEnum("DOW", "Sunday Monday Tuesday Wednesday Thursday Friday Saturday")
DOW.Sunday == 1 # True
DOW(1) # <DOW.Sunday: 1>