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

时间:2017-06-01 05:03:32

标签: python dictionary tuples

首先,我对编程很陌生。 (这是我在溢出中的第二个问题。)

我已经学习了将近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] ]

当我打印(rating_groups)时,IDLE会将此返回给我:

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

所以,这是我的问题。这个最后一个元组在右括号旁边有这个“奇怪的”第二个逗号。我已经知道它正在执行的代码(因为API的cuz)。 我想知道的是我如何在这样的元组中转换player_dictionary。我不太确定,但看起来我正在使用元组元组。

我在这里尝试了这个代码:player_listTuple = [(v, k) for v, k in player_dict.items()] 而Idle给了我这个

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

没有我期待看到的逗号。

感谢您的支持< 3

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

comma用于区分由tuple

包围的expression()

例如:

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

如果超过1 item,则无需添加即可添加额外的comma。见ex:

>>> 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()]