sách gpt4 ai đã đi

Lấy khóa từ từ điển: keys() so với 'keys for keys in dict.keys()'

In lại 作者:太空宇宙 更新时间:2023-11-03 14:47:11 26 4
mua khóa gpt4 Nike

在我开始使用 Python 的过程中尝试找出最佳编码实践。我用 Pandas 写了一个 csv 到数据框阅读器。它使用格式:

dataframe = read_csv(csv_input, usecols=column_names, dtype=test_dictionary)

我们使用字典来确定要导入的列及其关联的数据类型。例如:

test_dictionary = {'column1': int, 'column2': float, 'column3': string}

现在要分配第二个参数 usecols,我们可以从字典中获取键以仅获取列的名称(column1、column2、column3)。我使用了按键方法:

column_names = test_dictionary.keys()

有人检查我的代码,改为:

column_names = [keys for keys in test_dictionary.keys()]

有人可以向我解释为什么人们会选择一种方法而不是另一种方法来将字典中的键分配给变量吗?

1 Câu trả lời

在 Python 3 中,keys() 不返回列表,而是返回 a "view" of the keys in the dictionary .

>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> keys = d.keys()
>>> keys
dict_keys(['x', 'y', 'z'])

此 View 在两个主要方面不同于列表:

  1. 您不能修改它:

    >>> keys.append('k')
    Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng):
    Tệp "", dòng 1, trong
    AttributeError: 'dict_keys' object has no attribute 'append'
  2. 如果字典发生变化, View 会反射(reflect)这些变化:

    >>> del d['z']
    >>> keys
    dict_keys(['x', 'y'])

如果您需要修改它或希望它独立于原始字典,您可能希望将此 View 转换为列表。

除列表外,其他适用于这些目的的标准容器是集合(读写)和元组或卡住集(只读)。

值得一提的是这段代码:

column_names = [keys for keys in test_dictionary.keys()]

可以像这样以更紧凑和快速的方式重写(感谢 Cleb 指出!):

column_names = list(test_dictionary)

另一件需要注意的事情是遍历列表可能比遍历 View 稍微快一些。那是因为列表有更好的内存表示。 (但是,这是一个非常笼统的说法:字典中的项目数、创建列表所需的时间以及 Python 版本等因素会对整体性能产生很大影响。)

关于python - 从字典中获取键 : keys() vs 'keys for keys in dict.keys()' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391061/

26 4 0
Bài viết được đề xuất: ssl - nginx 响应所有域
Bài viết được đề xuất: python - 如何 grep 查找 unicode 字符?
Bài viết được đề xuất: swift - 带有不受信任的 SSL 证书的 HTTPS 站点在 swift 中的自动登录问题
Bài viết được đề xuất: security - 来自不安全 CDN 的 JS/CSS 行为
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com