在 Python3x 中使用两个迭代器压缩字典
Zip over dictionary with two iterators in Python3x
我正在尝试编写日历制作程序,以便更好地理解 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,我想像这样更改字典的值:
工作日 = { 'Mon': 5, 'Tue': 6, 'Wed': 7, 'Thu': 8, 'Fri': 9, 'Sat': 10, 'Sun': 11 }
我想以最 pythonic 的方式来做这件事,所以像这样:
for i, j zip(key in enumerate(weekdays_1, 1), range(j, 30)):
weekdays[key] = j
但我无法让它工作。可以这样使用 zip 吗?有哪些替代方案?
您可以使用 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}
我正在尝试编写日历制作程序,以便更好地理解 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,我想像这样更改字典的值:
工作日 = { 'Mon': 5, 'Tue': 6, 'Wed': 7, 'Thu': 8, 'Fri': 9, 'Sat': 10, 'Sun': 11 }
我想以最 pythonic 的方式来做这件事,所以像这样:
for i, j zip(key in enumerate(weekdays_1, 1), range(j, 30)):
weekdays[key] = j
但我无法让它工作。可以这样使用 zip 吗?有哪些替代方案?
您可以使用 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}