gpt4 book ai didi

Python 解包 kwargs 中的列表值

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:18 26 4
gpt4 key购买 nike

我有这样的字典列表。

rows = [
{'user': staff_user, 'grade': [u'0.0', u'N/A', u'N/A', u'N/A', u'N/A']},
{'user': non_staff_user, 'grade': [u'0.0', u'N/A', u'N/A', u'N/A', u'N/A']},
]
for row in rows:
expected_row = get_expected_rows(**row)



def get_expected_rows(user, grade):
#Here i want to list `grade` to be unpacked.
dict(zip(
['username', 'email', 'total', 'sub1grade', 'sub2grade', sub3grade, sub4grade],
user.username,
user.email,
grade #I want this unpacked
))

如何在方法中解压grade?有想法吗?

最佳答案

你做错了。为了在 zipping 之后创建字典,您需要提供两个要 zip 的列表,第一个列表是键列表,第二个列表是值列表。您已经创建了键列表,现在需要创建值列表。

这是因为dict()函数需要一个迭代器,它生成两个元素的元组(或元素的映射,或另一个字典),其中第一个元素是键,第二个元素是值。因此,这可以通过压缩两个列表(一个是键,另一个是值)来实现。压缩时,zip()将从相应的索引中获取元素并生成两个元素的元组。

示例 -

def get_expected_rows(user, grade):
#Here i want to list `grade` to be unpacked.
return dict(zip(
['username', 'email', 'total', 'sub1grade', 'sub2grade', sub3grade, sub4grade],
[ user.username, user.email ] + grade))
<小时/>

演示 -

>>> rows = [
... {'user': 'staff_user', 'grade': [u'0.0', u'N/A', u'N/A', u'N/A', u'N/A']},
... {'user': 'non_staff_user', 'grade': [u'0.0', u'N/A', u'N/A', u'N/A', u'N/A']}]
>>> def get_expected_rows(user, grade):
... #Here i want to list `grade` to be unpacked.
... return dict(zip(
... ['username', 'total', 'sub1grade', 'sub2grade', 'sub3grade', 'sub4grade'],
... [user] + grade
... ))
...
>>>
>>> for row in rows:
... expected_row = get_expected_rows(**row)
... print(expected_row)
...
{'sub1grade': 'N/A', 'sub3grade': 'N/A', 'sub4grade': 'N/A', 'sub2grade': 'N/A', 'username': 'staff_user', 'total': '0.0'}
{'sub1grade': 'N/A', 'sub3grade': 'N/A', 'sub4grade': 'N/A', 'sub2grade': 'N/A', 'username': 'non_staff_user', 'total': '0.0'}
<小时/>

请注意,代码中的另一个潜在问题是,即 -

expected_row = get_expected_rows(**row)

您在每次迭代中都会覆盖 expected_row,因此在迭代结束时,它只是最后一个 row 的预期行。如果您想创建预期行的列表,您应该这样做 -

expected_rows = []
for row in rows:
expected_rows.append(get_expected_rows(**row))

或者列表理解替代方案 -

expected_rows = [get_expected_rows(**row) for row in rows]

关于Python 解包 kwargs 中的列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com