Python从lis创建元组

2024-04-19 23:48:20 发布

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

鉴于此dictionary

sql_playlists={
'user1':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 1': 1.0},
'user2':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 2': 1.0},
'user3':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 3': 1.0},
'user4':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 4': 1.0},
'user5':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 4': 1.0}}

我可以创建keysvalues的数据元组,如下所示:

^{pr2}$

哪些输出:

[(u'user1', u'Make You Feel My Love', 1.0), (u'user1', u'I See Fire', 1.0), (u'user', u'High And Dry', 1.0), (u'user1', u'Fake Plastic Trees', 1.0), (u'user1', u'One', 1.0), (u'user1', u'Goodbye My Lover', 1.0), (u'user1', u'No Surprises', 1.0)]

对于每个用户。在

但是如果sql_playlistlist,相同的数据结构,但在[]内,而不是dictionary,怎么办?在

编辑:列表

sql_playlists=[{
'user1':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 1': 1.0},
'user2':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 2': 1.0},
'user3':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 3': 1.0},
'user4':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 4': 1.0},
'user5':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 4': 1.0}}]

如何调整list comprehension以便从列表中生成相同的tuples?在

这适用于第一个用户:

sqltuples = [(k1,k2,v2) for k1,v1 in sql_playlists[0].items()
             for k2,v2 in v1.items()]

但我想要所有用户。在


Tags: 用户yousqldictionarysongwillwerock
1条回答
网友
1楼 · 发布于 2024-04-19 23:48:20

如果你指的是字典数组: sql_playlists=[ {'user1':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 1': 1.0}}, {'user2':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 2': 1.0}}, {'user3':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 3': 1.0}}, {'user4':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 4': 1.0}}, {'user5':{'Karma Police':1.0,'Roxanne':1.0,'Sonnet':1.0,'We Will Rock You':1.0,'Song 4': 1.0}}]

然后:

sqltuples = [(k1,k2,v2) for vlist in sql_playlists for k1,v1 in vlist.items() for k2,v2 in v1.items()]

您应该注意,这将以不同的顺序生成元组,因为在枚举列表时保留排序,而不是dict

相关问题 更多 >