从字典创建特定类型的元组(python)

2024-04-25 21:15:17 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我对编程非常陌生。(这是我的第二个问题。)

我已经学习了将近6个小时了。我在stackoverflow和许多其他python网站上读了很多。我大部分的怀疑都消失了,现在我有一个我无法真正解决的问题。你知道吗

听着,我有一个简单的格言:

player_dict = {'Alice': Rating(),
           'Bob': Rating(),
           'Carla': Rating(),
           'Daniel': Rating(),
           'Esdras': Rating(),
           'Flavia': Rating(),
           'Glauber': Rating(),
           'Hudson': Rating(),
           'Iara': Rating(),
           'Josiane':Rating()}

rating()方法创建如下元组

trueskill.Rating(mu=25, sigma=8.33333)

要更新这些评级,我应该在类似这样的情况下使用Rating()对象

rating_groups = [(player_dict['Alice'],), (player_dict['Bob'],), (player_dict['Carla'],),
                (player_dict['Daniel'],), [...brevity] ]

当我打印(分级组)时,IDLE会返回以下内容:

[(trueskill.Rating(mu=25, sigma=8.33333),), (trueskill.Rating(mu=25, sigma=8.33333),), [...brevity]

所以,这是我的问题。最后一个元组在右括号旁边有一个“奇怪”的第二个逗号。我已经知道这对于我正在执行的代码是必要的(因为API)。我想知道的是如何将player\u字典转换成这样的一个元组。我不太确定,但看起来我正在处理一个元组。你知道吗

我已经在这里尝试过这个代码:player_listTuple = [(v, k) for v, k in player_dict.items()] 他还给了我这个

[('Alice', trueskill.Rating(mu=25.0, sigma=8.33333)), ('Bob', trueskill.Rating(mu=25.0, sigma=8.33333)),

没有我期望看到的逗号。你知道吗

感谢您的支持<;3


Tags: 代码sigmadictbob元组player逗号daniel
2条回答

comma用于区分被()包围的tupleexpression

例如:

>>> s = ('hello_world')
>>> type(s)
<type 'str'>
>>> 
>>> s = ('hello_world',)
>>> type(s)
<type 'tuple'>

对于超过1 item的,不需要通过add来添加额外的comma。例如,请参见:

>>> s = (1, 2)
>>> type(s)
<type 'tuple'>
>>> print(s)
(1, 2)
>>> 
>>> s1 = (1, 2,)
>>> print(s1)
(1, 2)
>>> print(s1)
(1, 2)

假设您需要添加comma,您可以这样做

player_listTuple = [(v, k, None) for v, k in player_dict.items()]

要将player_dictionary转换为元组列表,可以尝试以下操作:

[(item,) for item in player_dictionary.values()]

相关问题 更多 >