Python 我想计算一个字符串在字典中出现多少次,这个字典有元组键?
字典键是两个项的元组,即('tom','tb'):1 计数应该只对元组中的第一项进行计数。这是下面的字典 Dict={('tom','tb'):1,('image','image'):1,('image','love'):2, ('let','go'):1,('i','let'):1} 例如,如果我要计算‘image’,它应该给我值2,如果我计算‘tom’,它应该给我值1Python 我想计算一个字符串在字典中出现多少次,这个字典有元组键?,python,python-3.x,Python,Python 3.x,字典键是两个项的元组,即('tom','tb'):1 计数应该只对元组中的第一项进行计数。这是下面的字典 Dict={('tom','tb'):1,('image','image'):1,('image','love'):2, ('let','go'):1,('i','let'):1} 例如,如果我要计算‘image’,它应该给我值2,如果我计算‘tom’,它应该给我值1 我不确定是否有办法做到这一点这是一个有点夸夸其谈的问题,所以我在解释时尽力回答 首先,我将收集字典中的所有关键字: l={}
我不确定是否有办法做到这一点这是一个有点夸夸其谈的问题,所以我在解释时尽力回答 首先,我将收集字典中的所有关键字:
l={}#替换为您的字典
密钥数据=l.密钥()
然后,我会将元组列表展平,以获得所有使用项的列表:
flatten = lambda data: [item for pair in data for item in pair]
key_data = flatten(key_data)
然后使用.count
方法:key\u data.count(“图像”)
这将返回适当的结果。如果这不能回答问题,或者您还有更多问题,请发表评论
编辑:
要仅计算元组中的第一项,应将行更改为key\u data=[key[0]for key in l.keys()]
,而不是key\u data=l.keys()
然后,您不必包括涉及展平函数的行。如果您只想在
Dict
中计算每个元组键的第一项,您可以使用一个包含循环的函数,如下所示:
Dict = {('tom', 'tb'): 1, ('image', 'music'): 1, ('image', 'love'): 2, ('let', 'go'): 1, ('i', 'let'): 1}
def GetFirstItemCount (dictData, tupKeyItem):
count = {tupKeyItem: 0}
for tupKey in dictData:
if tupKey[0] in count.keys():
count[tupKeyItem] += 1
return count[tupKeyItem]
然后调用GetFirstItemCount
传递它Dict
,并使用您想要的任何项目进行计数。如果传入的字典项的“元组键”中没有此类项,则将得到0
//产出1
print(GetFirstItemCount(Dict, 'tom'))
//产出2
print(GetFirstItemCount(Dict, 'image'))
//产出0
print(GetFirstItemCount(Dict, 'foo'))
你能自己演示一下解决这个问题的方法吗?如果我将
('image','image'):1添加到字典中,你的计算结果会发生怎样的变化?仍然是2为什么第三个键中的'image'
不会改变计数?是的,'image'
不会变为3。现在键中出现了三个'image'
。答案很接近,但我只想计算元组中的第一个项。e、 g Dict={('tom','tb'):1,('image','image'):1,('image','love'):2,('let','go'):1,('i','let'):1}这里的图像计数为2