用Python3x中的两个迭代器对字典进行压缩

问题描述:

我正在尝试将日历制作程序放在一起,以便我可以更好地理解python字典。用Python3x中的两个迭代器对字典进行压缩

我的小程序的发展阶段是表达以下伪代码蟒蛇:

for i in number_of_dictionary_keys, j in range(j, 30): 
    change the value of number @ that key to j 

所以我有一个Ordereddict对象:

weekdays = { 'Mon': 0, 'Tue': 0, 'Wed': 0, 'Thu': 0, 'Fri': 0, 'Sat': 0, 'Sun': 0 } 

,并说J = 4,我想改变这样的字典的值:

weekdays = {'Mon':5,'Tue':6,'Wed':7,'Thu':8,'Fri':9 ,'Sat':10,'Sun':11}

我想这样做的最Python的方式,所以是这样的:

for i, j zip(key in enumerate(weekdays_1, 1), range(j, 30)): 
     weekdays[key] = j 

,但我不能得到那个工作。这样可以使用zip吗?有什么选择?

+0

这看起来很有趣,但我不知道你的代码应该如何创建一个日历。你能否详细解释一下?顺便说一句,如果你需要周一到周五,[itertools.cycle](https://docs.python.org/3/library/itertools.html#itertools.cycle)可能会有所帮助。 – skrx

+0

嗯,我没有具体说明,我想自己解决这个问题 - 我做了btw!这很有用,我会记住它 – Davtho1983

您可以使用keys()遍历dict/OrderedDict中的所有密钥。下面是一个例子dict

j = 4 
weekdays = { 'Mon': 0, 'Tue': 0, 'Wed': 0, 'Thu': 0, 'Fri': 0, 'Sat': 0, 'Sun': 0 } 
for key, j in zip(weekdays.keys(), range(j, 30)): 
    weekdays[key] = j + 1 

print(weekdays) 
#{'Mon': 5, 'Tue': 6, 'Wed': 7, 'Thu': 8, 'Fri': 9, 'Sat': 10, 'Sun': 11}