Jaf*_*son 1 python sorting file python-3.x
我正在尝试使用以下逻辑对包含基于其所拥有的域的电子邮件的1 GB文件进行排序:
data = {}
emails = open('test','r',encoding='ascii',errors='ignore')
for email in emails.readlines():
(user, domain) = email.split('@')
data[domain] = email
keys = data.keys()
keys.sort()
print([data[x] for x in keys])
Run Code Online (Sandbox Code Playgroud)
当我使用Python 3.5运行该文件时,我收到以下错误:
keys.sort()
AttributeError: 'dict_keys' object has no attribute 'sort'
Run Code Online (Sandbox Code Playgroud)
请允许,让我知道如何使其成功运行.
您需要调用list返回的dict_keys对象将其强制转换为具有以下list.sort方法的列表:
keys = list(data.keys())
keys.sort()
Run Code Online (Sandbox Code Playgroud)
或者sorted直接在dict_keys对象上直接调用以返回排序列表:
keys = sorted(data.keys())
Run Code Online (Sandbox Code Playgroud)
另一方面,你应该考虑这部分代码,这样每次将新密钥添加到dict时,都不会进行排序,而是在循环结束时进行排序.
或者,sorted如果您实际上不需要键列表,只需直接在dict上应用:
for email in emails.readlines():
(user, domain) = email.split('@')
data[domain] = email
print([v for _, v in sorted(data.items(), key=lambda x: x[0])]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |