gpt4 book ai didi

python - 在Python中的内部字典中创建唯一键列表的更好方法

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

在 Python 中的内部字典中创建唯一键列表的更好方法

我的字典如下:

users3 = {"David": {"Imagine Dragons": 3, "Daft Punk": 5, "Lorde": 4, "Fall Out Boy": 1},
"Matt": {"Imagine Dragons": 3, "Daft Punk": 4, "Lorde": 4, "Fall Out Boy": 1},
"Ben": {"Kacey Musgraves": 4, "Imagine Dragons": 3, "Lorde": 3, "Fall Out Boy": 1},
"Chris": {"Kacey Musgraves": 4, "Imagine Dragons": 4, "Daft Punk": 4, "Lorde": 3, "Fall Out Boy": 1},
"Tori": {"Kacey Musgraves": 5, "Imagine Dragons": 4,"Daft Punk": 5, "Fall Out Boy": 3}}

(取自:http://guidetodatamining.com/)

我的目标是在内部字典中的键之间创建“基于项目的相似性”矩阵。我相信我必须首先在内部字典中生成唯一键的列表,我已经使用以下脚本完成了它:

def masterOfTitle(users3):
master_title = []
for (users, ratings) in users3.items():
for key in ratings.keys():
if key not in master_title:
master_title.append(key)
return master_title

最后,结果符合预期:

>>> titles = masterOfTitle(users3)
>>> titles
['Daft Punk', 'Kacey Musgraves', 'Lorde', 'Fall Out Boy', 'Imagine Dragons']
>>>

CMIIW,至少对我(作为新手)来说,Python 的编程逻辑/流程与我学过的任何其他语言(c、delphi/pascal、vb)略有不同有没有更好的使用理解表达的方法?恳请您的建议。

最佳答案

使用sets收集唯一的 key :

def masterOfTitle(users3):
titles = set()
for nested in users3.itervalues():
titles.update(nested)
return titles

如果你真的愿意,你也可以使用集合理解:

def masterOfTitle(users3):
return {title for nested in users3.itervalues() for title in nested}

您链接到的书似乎使用 Python 2 作为示例(他们使用 codecs.open() 进行 unicode 编码/解码),所以我使用 dict.itervalues() 以最有效的方式迭代这些值。

演示:

>>> masterOfTitle(users3)
set(['Daft Punk', 'Fall Out Boy', 'Lorde', 'Kacey Musgraves', 'Imagine Dragons'])

关于python - 在Python中的内部字典中创建唯一键列表的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097212/

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