在Python3x中使用两个迭代器压缩字典

时间:2017-08-10 11:33:22

标签: python-3.x zip ordereddictionary

我正在尝试整理一个日历制作程序,以便我能更好地理解python词典。

我的迷你程序的开发阶段是在python中表达以下伪代码:

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,我想改变dict的值,如下所示:

平日= {'周一':5,'星期二':6,'星期三':7,'星期四':8,'星期五':9,'星期六':10,'太阳':11}

我想以最pythonic的方式做到这一点,所以像这样:

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

但我无法让它发挥作用。是否可以这种方式使用zip?有哪些替代方案?

1 个答案:

答案 0 :(得分:1)

您可以使用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}