擅长:python、mysql、java
<p>这个注解<code>List[(PeopleName, PeopleAge)]</code>抛出<code>TypeError: Too many parameters for typing.List; actual 2, expected 1</code>。你知道吗</p>
<p>具有两种不同类型的元组也应该用<code>typing.Tuple</code>注释:</p>
<pre><code>List[Tuple[PeopleName, PeopleAge]]
</code></pre>
<p>但是,要注释参数,最好使用抽象集合类型,如<code>Sequence</code>或<code>Iterable</code>:</p>
<pre><code>Demography = NamedTuple(
"Demography", [("names", Sequence[Tuple[PeopleName, PeopleAge]]), ("postalcodes", PeoplePC)],
)
</code></pre>
<p>我不会对每一组应用<code>to_nested_tuple</code>,而是直接按以下方式进行:</p>
<pre><code>d = [Demography([(PeopleName(row['Name']), PeopleAge(row['Age'])) for _, row in group.iterrows()], PeoplePC(k))
for k, group in people.groupby("PostalCode")]
</code></pre>
<p>现在,结果将打印为:</p>
<pre><code>[Demography(names=[(PeopleName(Name='tom'), PeopleAge(Age=10)), (PeopleName(Name='juli'), PeopleAge(Age=14))], postalcodes=PeoplePC(PostalCode='ab 11')),
Demography(names=[(PeopleName(Name='nick'), PeopleAge(Age=15))], postalcodes=PeoplePC(PostalCode='ab 22'))]
</code></pre>