回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在编写一个job planner,下面是一个sqlite3查询结果。我想要的是按照工程师(例如“Dan”)和他们是否有工作(最后一列)或正在度假(第二列到最后一列)对数据进行分组</p>
<p>因此,理想情况下,我可能需要一个dict,每个工程师都有一把钥匙,每天都有一把钥匙,并且:</p>
<ul>
<li>当天的工作清单</li>
<li>他们正在度假</li>
<li>他们没有工作
那天</li>
</ul>
<p>我试过以下方法</p>
<pre><code>jobs = {}
for j in res:
jobs.setdefault(j[0], []).append(j[1:])
jobs2 = {}
for j in res:
jobs2.setdefault((j[0], j[1]), []).append(j[2:])
</code></pre>
<p>但我不知道如何使用setdefault或dict理解来获得所需的数据结构。任何想法都值得赞赏</p>
<p>以下是数据:</p>
<pre><code>('Dan', '2021-03-11', 'Thu', '2021-03-11', 'am', '11/03', 'Customer 1', '', 'U6kfoP9QPDw', None, 0, 1)
('Dan', '2021-03-12', 'Fri', None, None, None, None, None, None, None, 0, 0)
('Dan', '2021-03-13', 'Sat', None, None, None, None, None, None, None, 0, 0)
('Dan', '2021-03-14', 'Sun', None, None, None, None, None, None, None, 0, 0)
('Dan', '2021-03-15', 'Mon', None, None, None, None, None, None, None, 0, 0)
('Dan', '2021-03-16', 'Tue', None, None, None, None, None, None, None, 0, 0)
('Dan', '2021-03-17', 'Wed', None, None, None, None, None, None, None, 0, 0)
('Gareth', '2021-03-11', 'Thu', None, None, None, None, None, None, None, 0, 0)
('Gareth', '2021-03-12', 'Fri', '2021-03-12', 'am', '12/03', 'Customer 4', '', 'k-uFnkwLLdo', None, 0, 2)
('Gareth', '2021-03-12', 'Fri', '2021-03-12', 'pm', '12/03', 'Customer 2', '', 'TWQdiG3piAE', None, 0, 2)
('Gareth', '2021-03-13', 'Sat', None, None, None, None, None, None, None, 0, 0)
('Gareth', '2021-03-14', 'Sun', None, None, None, None, None, None, None, 0, 0)
('Gareth', '2021-03-15', 'Mon', None, None, None, None, None, None, None, 0, 0)
('Gareth', '2021-03-16', 'Tue', None, None, None, None, None, None, None, 0, 0)
('Gareth', '2021-03-17', 'Wed', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-11', 'Thu', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-12', 'Fri', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-13', 'Sat', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-14', 'Sun', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-15', 'Mon', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-16', 'Tue', None, None, None, None, None, None, None, 0, 0)
('Garth', '2021-03-17', 'Wed', None, None, None, None, None, None, None, 0, 0)
('Ian', '2021-03-11', 'Thu', '2021-03-11', 'am', '11/03', 'Customer 3', '', 'SCfbuLeQ9ig', None, 0, 1)
('Ian', '2021-03-12', 'Fri', None, None, None, None, None, None, None, 0, 0)
('Ian', '2021-03-13', 'Sat', None, None, None, None, None, None, None, 0, 0)
('Ian', '2021-03-14', 'Sun', None, None, None, None, None, None, None, 0, 0)
('Ian', '2021-03-15', 'Mon', None, None, None, None, None, None, None, 0, 0)
('Ian', '2021-03-16', 'Tue', None, None, None, None, None, None, None, 0, 0)
('Ian', '2021-03-17', 'Wed', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-11', 'Thu', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-12', 'Fri', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-13', 'Sat', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-14', 'Sun', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-15', 'Mon', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-16', 'Tue', None, None, None, None, None, None, None, 0, 0)
('Jim', '2021-03-17', 'Wed', None, None, None, None, None, None, None, 1, 0)
</code></pre>