如何检查字典中的值是否都具有相同的值X?

时间:2011-02-22 03:12:13

标签: python dictionary

我有一本字典,我正在尝试检查所有具有相同数值的值的罕见情况,例如1.如何以有效的方式进行此操作?

4 个答案:

答案 0 :(得分:20)

我认为你的意思是

d = {'a':1, 'b':1, 'c':1}
len(set(d.values()))==1    # -> True

如果您想检查特定值,那么

testval = 1
all(val==testval for val in d.values())   # -> True

此代码通常会提前(快速)失败

答案 1 :(得分:1)

您不能拥有具有相同值的键* s *。这意味着您的字典中只有一个键,因为后续的每个键都会覆盖前一个键。如果您担心所有键的值都是1。然后你做这样的事情:

if set(your_dict.values()) == set([1]):
   pass

答案 2 :(得分:1)

this other question的一些讨论启发:

>>> def unanimous(seq):
...   it = iter(seq)
...   try:
...     first = next(it)
...   except StopIteration:
...     return True
...   else:
...     return all(i == first for i in it)
... 
>>> unanimous("AAAAAAAAAAAAA")
True
>>> unanimous("AAAAAAAAAAAAB")
False

使用unanimous查看所有dict值是否相同:

>>> dd = { 'a':1, 'b':1, 'c':1 }
>>> print unanimous(dd.values())
True

答案 3 :(得分:0)

你也可以试试这个:

>>> test
{'c': 3, 'b': 3, 'd': 3, 'f': 3}
>>> z=dict(zip(test.values(),test.keys()))
>>> z
{3: 'f'}
>>> len(z) == 1
True

>>> test {'c': 3, 'b': 3, 'd': 3, 'f': 3} >>> z=dict(zip(test.values(),test.keys())) >>> z {3: 'f'} >>> len(z) == 1 True