gpt4 book ai didi

python - 如何将字典中的键与列表中的元素匹配并将这些键值存储到Python中的另一个字典中?

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

我有一本这样的字典:

{'and': {'in': 0.12241083209661485,
'of': 0.6520996477975429,
'to': 0.7091938791256235},
'in': {'and': 0.12241083209661485,
'of': -0.46306801953487436,
'to': -0.0654517869126785},
'of': {'and': 0.6520996477975429,
'in': -0.46306801953487436,
'to': 0.8975056783377765},
'to': {'and': 0.7091938791256235,
'in': -0.0654517869126785,
'of': 0.8975056783377765}}

和这样的列表:

list1 = ['the', 'of', 'Starbcks', 'in', 'share', 'for', '%', 'fiscal', '2007',
'growth', 'year', 'cents', 'earnings', 'a', 'company', '2,400', 'net',
'abot', 'range', 'stores', 'revene', 'sales', 'gidance', '``', "''",
'earnings', 'provides', 'wew', 'net']

我想遍历列表并检查哪些单词等于列表中的键,然后将这些键值添加到另一个字典中。

就像这个例子一样,我希望这是我的结果:

new_dict = {'in': {'and': 0.12241083209661485,
'of': -0.46306801953487436,
'to': -0.0654517869126785},
'of': {'and': 0.6520996477975429,
'in': -0.46306801953487436,
'to': 0.8975056783377765}}

我正在做这样的事情:

for elem in l:
temp_dict = dict((key,value) for key,value in similarity_matrix.iteritems() if key == elem)
print temp_dict

但是我得到了 {} 作为结果。有什么问题以及如何修复它?

编辑:

现在,我拿了这个:

OrderedDict(for k in list1:
if k in d:
new_d[k] = d[k]
else:
new_d[k] = 0)

即,不存在的键将在 new_d 中获得值 0。但是,有什么方法可以按照 list1 中单词的顺序获取字典吗?

输出应该是:

new_d : {'the' : 0, 'of': {'and': 0.6520996477975429, 'in': -0.46306801953487436,'to': 0.8975056783377765}, 'Starbucks' : 0, ......}

最佳答案

list1 = ['the', 'of', 'Starbcks', 'in', 'share', 'for', '%', 'fiscal', '2007', 'growth', 'year', 'cents', 'earnings', 'a', 'company', '2,400', 'net', 'abot', 'range', 'stores', 'revene', 'sales', 'gidance', '``', "''", 'earnings', 'provides', 'wew', 'net']
d={'and': {'of': 0.6520996477975429, 'in': 0.12241083209661485, 'to': 0.7091938791256235}, 'of': {'and': 0.6520996477975429, 'to': 0.8975056783377765, 'in': -0.46306801953487436}, 'in': {'and': 0.12241083209661485, 'of': -0.46306801953487436, 'to': -0.0654517869126785}, 'to': {'and': 0.7091938791256235, 'of': 0.8975056783377765, 'in': -0.0654517869126785}}
new_d ={}
for k in list1:
if k in d:
new_d[k] = d[k]
print(new_d)
{'of': {'and': 0.6520996477975429, 'to': 0.8975056783377765, 'in': -0.46306801953487436}, 'in': {'and': 0.12241083209661485, 'of': -0.46306801953487436, 'to': -0.0654517869126785}}

或者字典理解:

new_d ={ k: d[k] for k in list1 if k in d}

检查某个键是否在字典或集合中的时间复杂度O(1)

使用您自己的代码,您可以执行以下操作来检查 key 是否在您的列表中:

temp_dict = dict((key,value) for key,value in d.iteritems() if key in set(list1))

要保持添加项目的顺序,您需要使用 collections.OrderedDict :

from collections import OrderedDict
new_d = OrderedDict(((k,d[k]) if k in d else (k,0) for k in list1 ))

关于python - 如何将字典中的键与列表中的元素匹配并将这些键值存储到Python中的另一个字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939851/

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