为了创建一个以后需要创建另一个函数的函数,我正在使用dict和keys。通过这种方式,我一直在搜索有关它们如何工作的一些信息。但是当我必须使用dict和if语句时,我通常会被卡住。
我在一个函数中工作,该函数返回dict中的值的数量,这也是dict中的键。我的想法是使用for循环,但我陷入了if语句代码。这似乎是错的,但我不知道会是什么。我已经推断出我必须使用in运算符和变量k和d,以及索引但我不知道我是否正确使用它们。 任何帮助都会有用。 提前致谢
这是我目前的进展:
def count_values_that_are_keys(d):
'''(dict) -> int
Return the number of values in d that are also keys in d.
>>> count_values_that_are_keys({1: 2, 2: 3, 3: 3})
3
>>> count_values_that_are_keys({1: 1})
1
>>> count_values_that_are_keys({1: 2, 2: 3, 3: 0})
2
>>> count_values_that_are_keys({1: 2})
0
'''
result = 0
for k in d:
if [d in [k]]: # This part it seems wrong cause I don't get what I expect
result = result + 1
return result
答案 0 :(得分:1)
坚持使用当前的方法,只需制作一个字典键列表,然后检查该列表中字典值的成员资格就更容易了。对于大型词典,您需要使用dict_keys = set(d.keys())
来加快查找速度。
def count_values_that_are_keys(d):
'''(dict) -> int
Return the number of values in d that are also keys in d.
>>> count_values_that_are_keys({1: 2, 2: 3, 3: 3})
3
>>> count_values_that_are_keys({1: 1})
1
>>> count_values_that_are_keys({1: 2, 2: 3, 3: 0})
2
>>> count_values_that_are_keys({1: 2})
0
'''
dict_keys = d.keys()
result = 0
for key, value in d.items():
if value in dict_keys:
result += 1
return result
print(count_values_that_are_keys({1: 2, 2: 3, 3: 3}))
print(count_values_that_are_keys({1: 1}))
print(count_values_that_are_keys({1: 2, 2: 3, 3: 0}))
print(count_values_that_are_keys({1: 2}))
答案 1 :(得分:1)
def count_values_that_are_keys(d):
return sum([x in d.keys() for x in d.values()])
使用列表理解构建包含True
/ False
的列表。 Sum将True
视为1,将False
视为0。
答案 2 :(得分:0)
def count_values_that_are_keys(d):
'''(dict) -> int
Return the number of values in d that are also keys in d.
>>> count_values_that_are_keys({1: 2, 2: 3, 3: 3})
3
>>> count_values_that_are_keys({1: 1})
1
>>> count_values_that_are_keys({1: 2, 2: 3, 3: 0})
2
>>> count_values_that_are_keys({1: 2})
0
#x in d.keys()for x in d.values()
'''
result = 0
for k in d:
if d[k] in d.keys():
result = result + 1
return result