【问题标题】:Why can you not create a dictionary from an enumerated data set after you print it? [duplicate]为什么打印后不能从枚举数据集创建字典? [复制]
【发布时间】:2019-06-18 13:48:53
【问题描述】:

我正在练习使用enumerate() 和 python 中的字典。当我不打印枚举数据时,我可以从枚举数据创建字典。但是当我打印出枚举数据时,我不再能够创建字典。为什么会这样?

当我不打印我的枚举数据时:

data = ['a','b','c','d']

enum_data = enumerate(data, 1)

data_dict = dict(enum_data)
print("Data Dict: ", data_dict)

print("Should be 'a': ", data_dict.get(1))

我的输出是

Data Dict:  {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Should be 'a':  a

但是当我不这样做时:

data = ['a','b','c','d']

enum_data = enumerate(data, 1)
for enum, point in enum_data:
    print("Count: ", enum, " ", "Element: ", point)

data_dict = dict(enum_data)
print("Data Dict: ", data_dict)

print("Should be 'a': ", data_dict.get(1))

我明白了:

Count:  1   Element:  a
Count:  2   Element:  b
Count:  3   Element:  c
Count:  4   Element:  d
Data Dict:  {}
Should be 'a':  None

【问题讨论】:

标签: python python-3.x iterator enumerate


【解决方案1】:

enumerate 返回一个迭代器。一个迭代器may only be iterated over once

一种常见的解决方案是使用itertools.tee 返回任意数量的独立迭代器:

from itertools import tee

data = ['a','b','c','d']

enum_data1, enum_data2 = tee(enumerate(data, 1), 2)
for enum, point in enum_data1:
    print("Count: ", enum, " ", "Element: ", point)

data_dict = dict(enum_data2)

print("Data Dict: ", data_dict)  # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
print("Should be 'a': ", data_dict.get(1))  # a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多