【问题标题】:Zip over dictionary with two iterators in Python3x在 Python3x 中使用两个迭代器压缩字典
【发布时间】:2017-08-10 11:33:22
【问题描述】:

我正在尝试编写一个日历制作程序,以便更好地理解 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 的值:

weekdays = { '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 吗?有哪些替代方案?

【问题讨论】:

  • 这看起来很有趣,但我不确定您的代码应该如何创建日历。你能解释得更详细一点吗?顺便说一句,如果您需要在工作日循环,itertools.cycle 可能会有所帮助。
  • 嗯,我没有具体说明,因为我想自己解决这个问题——顺便说一句,我做到了!这很有用,我会记住的

标签: python-3.x zip ordereddictionary


【解决方案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}

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 2015-06-22
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多