Python 翻字典

Python 翻字典,python,dictionary,Python,Dictionary,我试着到处阅读,但似乎找不到有效的答案。。。 本练习将创建一个函数,该函数接受一个数字(0-6),并返回一周中相应的一天,星期日编号为0。我是用字典查的。现在它想要另一种方式,但我尝试过的一切似乎都不起作用,除了键入它。以下是我当前的反向代码: dayDict = {0: 'Sunday', 1:'Monday', 2:'Tuesday', 3:'Wednesday', 4:'Thursday', 5:'Friday', 6:'Saturday'} def day_nu

我试着到处阅读,但似乎找不到有效的答案。。。 本练习将创建一个函数,该函数接受一个数字(
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

反向字典是一行简单的代码。。。一旦你知道怎么做

day_num = {value: key for key, value in dayDict.iteritems()}

反向字典是一行简单的代码。。。一旦你知道怎么做

day_num = {value: key for key, value in dayDict.iteritems()}
如果您使用的是Python 3.x:

dayNumDict = {v:k for k,v in dayDict.items()}
def day_num(dayName):
    return dayNumDict[dayName]
如果您使用的是Python 3.x:

dayNumDict = {v:k for k,v in dayDict.items()}
def day_num(dayName):
    return dayNumDict[dayName]

听上去,你需要一个新函数,它接受星期日和星期六,并返回相应的数值

我能想到的唯一方法是使用循环并测试所有字典选项,如下所示:

def getDayNumber(day):
   for i in range(len(<dictionary>)):
       if <dictionary>[i] == day.captialize():
           return i
def getDayNumber(天):
对于范围内的i(len()):
如果[i]==day.capitalialize():
返回i

因此,从它听起来的样子来看,您需要一个新函数,它接受星期日-星期六并返回相应的数值

我能想到的唯一方法是使用循环并测试所有字典选项,如下所示:

def getDayNumber(day):
   for i in range(len(<dictionary>)):
       if <dictionary>[i] == day.captialize():
           return i
def getDayNumber(天):
对于范围内的i(len()):
如果[i]==day.capitalialize():
返回i

你也可以用日期和数字来构建dict,如下所示

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

你也可以用日期和数字来构建你的dict,就像这样

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

既然你已经有了一大堆字典上的答案。。。。在您的特定情况下,似乎使用枚举更容易解决此问题

from enum import IntEnum

DOW = IntEnum("DOW", "Sunday Monday Tuesday Wednesday Thursday Friday Saturday")

DOW.Sunday == 1  # True
DOW(1)  # <DOW.Sunday: 1>
从枚举导入IntEnum
道琼斯指数=IntEnum(“道琼斯指数”,“星期日-星期一-星期二-星期三-星期五-星期六”)
道指星期日=1#对
道指(一)

既然你已经有了一大堆字典里的答案。。。。在您的特定情况下,似乎使用枚举更容易解决此问题

from enum import IntEnum

DOW = IntEnum("DOW", "Sunday Monday Tuesday Wednesday Thursday Friday Saturday")

DOW.Sunday == 1  # True
DOW(1)  # <DOW.Sunday: 1>
从枚举导入IntEnum
道琼斯指数=IntEnum(“道琼斯指数”,“星期日-星期一-星期二-星期三-星期五-星期六”)
道指星期日=1#对
道指(一)


是的,这是显而易见的。然而,我想知道,根据我自己的知识,将其反转。
{v:k代表k,v代表dayDict.items()}
dayDict
首先应该是一个
列表。是的,这是显而易见的。然而,我想知道,根据我自己的知识,将其反转
{v:k代表k,v代表dayDict.items()}
dayDict
首先应该是一个
列表。这是一种效率极低的方法。最好像“Prune did”那样编一本新字典。pzp我知道,但他说他不想编一本新字典。这实际上是我希望的方式。pzp效率低下有什么特殊原因吗?我说它效率低下的原因是,每次它需要查找一个日数时,它都可能要循环所有的日,并使用字典查找来获取值。这意味着在最坏的情况下,代码必须进行七次字典查找,而大多数其他答案只需要一次查找。但在实践中,这可能并不明显,因此如果它起作用,并且这是您希望做的,那么就继续使用它(并可能给它一个最佳答案复选标记)。这是一种非常低效的方法。最好像“Prune did”那样编一本新字典。pzp我知道,但他说他不想编一本新字典。这实际上是我希望的方式。pzp效率低下有什么特殊原因吗?我说它效率低下的原因是,每次它需要查找一个日数时,它都可能要循环所有的日,并使用字典查找来获取值。这意味着在最坏的情况下,代码必须进行七次字典查找,而大多数其他答案只需要一次查找。在实践中,这可能并不明显,所以如果它有效并且这是你希望做的,那么继续使用它(也许给这个最好的答案打勾)。我已经看过了,并且尝试过了。我不断得到:“dict”对象没有在该部分丢失属性“iteritems”…抱歉,相当新!看起来您正在使用Python3.x。尝试dayDict.items()而不是dayDict.iteritems()现在获取KeyError'Sunday'如何调用该函数?你能发布你的代码吗?我看过了,试过了。我不断得到:“dict”对象没有在该部分丢失属性“iteritems”…抱歉,相当新!看起来您正在使用Python3.x。尝试dayDict.items()而不是dayDict.iteritems()现在获取KeyError'Sunday'如何调用该函数?你能发布你的代码吗?这很有意义。我曾想过这样做,但我认为必须有一种方法来逆转我已经为第一个函数创建的字典。我对编程相当陌生(大约一个月),所以我不确定我的简单解决方案是不是最好的选择。这是有道理的。我曾想过这样做,但我认为必须有一种方法来逆转我已经为第一个函数创建的字典。我对编程相当陌生(大约一个月),所以我不确定我的简单解决方案是否是最好的选择。在这种情况下,如果键与值之间存在一对一的映射,请更正。当然,如果新键重叠,则不可能正确地“反转”词典。d1={a':1,'b':2,'c':1},d2={1:'a',2:'b'}或{1:'c',2:'b'},这取决于反转时分配的随机顺序。在存在键到值的一对一映射的情况下进行更正。当然,如果新键重叠,则不可能正确地“反转”词典。d1={'a':1,'b'