基于值提取字典对

时间:2013-02-01 05:31:25

标签: python

我想根据从这本词典中复制对,以便将它们分配给新变量。根据我的研究,基于键可以很容易地进行this,但在我的情况下,值是我正在跟踪的值。

things = ({'alpha': 1, 'beta': 2, 'cheese': 3, 'delta': 4})

在简化语言中,我可以像这样分配变量 -

smaller_things =  all values =3 in things 

3 个答案:

答案 0 :(得分:2)

您可以使用.items()遍历对并进行如下更改:

smaller_things = {}
for k, v in things.items():
    if v == 3:
        smaller_things[k] = v

如果你想要一个单行并且只需要按键,列表理解就可以了:

smaller_things = [k for k, v in things.items() if v == 3]

>>> things = { 'a': 3, 'b': 2, 'c': 3 }
>>> [k for k, v in things.items() if v == 3]
['a', 'c']

答案 1 :(得分:0)

请回答这是我对你的问题的理解。 字典是一种哈希表,字典的主要内涵是为值提供非整数索引。字典中的键就像索引一样。

假设考虑“数组”,数组中的元素由索引寻址,并且我们有元素索引而不是索引元素。就像我们在字典中有值的键(非整数索引)一样。

有一个暗示字典中的值是不可散列的,我的意思是字典中的值是可变的,字典中的键是不可变的,只需要随时改变值。

通过使用字典

中的值来解决任何问题并不是一个好方法

答案 2 :(得分:-1)

你可以反转字典并从中拉出来:

keys_values = { 1:"a", 2:"b"}
values_keys = dict(zip(keys_values.values(), keys_values.keys()))
print values_keys
>>>  {"a":1, "b":2}

通过这种方式,您可以使用标准字典语法执行任何操作。

潜在的缺点是如果原始字典中有非唯一值;具有相同值的原始项目在反向字典中具有相同的键,因此您无法保证哪个原始键将是新值。并且可能一些值是不可用的(例如列表)。

除非你有强迫性需要聪明,否则迭代项目会更容易:

for key, val in my_dict.items():
    if matches_condition(val):
        do_something(key)