python - 在字典中创建字典

标签 python dictionary python-3.6

我有一个名为播放列表的字典,以时间戳为键,以歌曲名称和艺术家为值,存储在一个元组中,格式如下:

{datetime.datetime(2019, 11, 4, 20, 2): ('Closer', 'The Chainsmokers'), 
datetime.datetime(2019, 11, 4, 19, 59): ('Piano Man', 'Elton John'), 
datetime.datetime(2019, 11, 4, 19, 55): ('Roses', 'The Chainsmokers')}

我试图从这个字典/元组中设置艺术家并将其设置为新字典中的键,值是该艺术家的歌曲及其在字典中出现的频率。示例输出为:

{'Chainsmokers': {'Closer': 3, 'Roses': 1},
'Elton John': {'Piano Man': 2}, … }

到目前为止,这是我的代码:

dictionary = {}
for t in playlist.values():
    if t[1] in dictionary:
        artist_song[t[1]] += 1
    else:
        artist_songs[t[1]] = 1
print(dictionary) 

但是,这只会返回艺术家作为键,艺术家播放的频率作为值。

在此先感谢您的帮助。

最佳答案

使用 defaultdict它有一个 defaultdict 作为默认值,最后有一个 int 作为嵌套默认值:

from collections import defaultdict

d = defaultdict(lambda: defaultdict(int))

for song, artist in playlist.values():
    d[artist][song] += 1

print(d)
# {'The Chainsmokers': {'Closer': 1, 'Roses': 1}), 'Elton John': {'Piano Man': 1})}

非 defaultdict 方法有点冗长,因为我们需要确保字典存在,这是 defaultdict 为我们处理的。

d = {}
for song, artist in playlist.values():
    d.setdefault(artist, {})
    d[artist].setdefault(song, 0)
    d[artist][song] += 1

关于python - 在字典中创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59060430/

相关文章:

Python:ctypes 指向局部变量的指针;如何确保他们不被释放?

python - 如何从 C 语言访问 python 字典?

python - 如何检查 python 字典中的冗余组合

python - 字典为相同的键添加值

django - 使用 Django Simple History 创建历史记录的问题

Python Selenium,帮助我定位网站中的元素

python - 如何组合多个列并创建唯一的数值

基于ubuntu的docker容器中的python argparse

java - 如果按顺序插入和访问,应该使用LinkedHashMap还是TreeMap?

tensorflow - 恢复训练卷积神经网络