Ben*_*ley 3 python list-comprehension
我是学习Python的新手,我是几百行的代码!
start = ['12', '08', '07', '16', '04']
middle = ['01', '01', '01', '01', '01']
end = ['13', '07', '08', '15', '05']
Run Code Online (Sandbox Code Playgroud)
期望的输出(按顺序):
[('1201': '13'), ('0801': '07'), ('0701': '08'), ('1601': '15'), ('0401', '05')]
Run Code Online (Sandbox Code Playgroud)
下面的代码将无法保持原始顺序(我使用python 3.4并且知道3.7+将解决此问题)
Combined_Lists = {start+middle: end for start, middle, end in zip(start, middle, end)}
Run Code Online (Sandbox Code Playgroud)
当我尝试以下时,它会出错
from collections import OrderedDict
Combined_Lists = {start+middle: end for start, middle, end in OrderedDict(zip(start, middle, end))}
Run Code Online (Sandbox Code Playgroud)
错误:
ValueError: too many values to unpack (expected 2)
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
您zip正在生成3个值,但OrderedDict需要可迭代的(key, value)对.
od = OrderedDict((s+m, e) for s, m, e in zip(start, middle, end))
Run Code Online (Sandbox Code Playgroud)
之后您无法将其解压缩到常规字典中,因为这样您就会丢失订单.
您想要的输出是一个列表,所以您可能正在寻找
[(s+m, e) for s, m, e in zip(start, middle, end)]
Run Code Online (Sandbox Code Playgroud)
代替.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |