我需要创建两个字典,同时阅读输入从一个发电机。我关心的是dict
和数据原则上只需要滚动一次。我该怎么办?你知道吗
# dummy data
def data():
yield 'a', 5
yield 'b', 8
yield 'c', 12
# two iterations, bad.
first = {k: v + 1 for k, v in data()}
second = {k: 2 * v for k, v in data()}
# One iteration only, but it scans both dicts on each step?
first = {}
second = {}
for k, v in data():
first[k] = v # this needs an underlying iteration over `first`, right?
second[k] = v # and this needs another underlying iteration over `second`..
# Is there aa.. multiple comprehension?
first, second = {k: v + 1, k: 2 * v for k, v in data()} # SyntaxError
# Would it be just equivalent to the previous loop?
您的第二种方法可能是最好的方法,向
dict
添加键不需要在该dict
上进行底层迭代。实际上,时间复杂度只是O(1),即常数时间,与字典大小无关。你知道吗相关问题 更多 >
编程相关推荐