Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想计算一个字符串在字典中出现多少次,这个字典有元组键?_Python_Python 3.x - Fatal编程技术网

Python 我想计算一个字符串在字典中出现多少次,这个字典有元组键?

Python 我想计算一个字符串在字典中出现多少次,这个字典有元组键?,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={}

字典键是两个项的元组,即('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.密钥()
然后,我会将元组列表展平,以获得所有使用项的列表:

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