扭转字典

时间:2016-02-05 00:42:27

标签: python dictionary

我到处尝试过阅读,似乎无法找到有效的答案...... 练习是创建一个函数,该函数采用数字(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

5 个答案:

答案 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>