如果key与value相同,如何将字典中的值更改为None

时间:2016-10-21 15:45:49

标签: python dictionary

我有一堆文件,我正在创建字典,在一些文件中,我创建的键和值是相同的。我需要跟踪相同的字典,以便其他人可以使用正确的值更新它们。我想将这些词典的值设置为none。我已经删除了所有空格和奇怪的字符,因此键和值完全相同。我基本上想说,“如果键和值相同,那么设置值=无”......

x = file I'm creating dictionary from
if x[1] = x[4]:
    d[x[1]] = None

但无论什么时候这样做,我都会收到一条错误消息:

SyntaxError: invalid syntax

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

由于我无法正确理解描述,我将回答标题:

for k, v in d.items():
    if k == v:
        d[k] = None

答案 1 :(得分:1)

在Python(以及我所知的所有其他语言)中,为了比较if中的值,使用了双等于==。我建议你阅读:Python IF...ELIF...ELSE Statements。以下是示例代码,将值设置为None,其中key和值相同:

my_dict = {'a': '1', 'b': 'b', 'c': '2', 'd': 'd'}  # 'b' and 'c' have same
                                                    # 'key' and 'value'
for key, value in my_dict.items():
    if key == value:
        my_dict[key] = None

# Updated value of 'my_dict':
# {'a': '1', 'c': '2', 'b': None, 'd': None}

答案 2 :(得分:1)

您可以使用词典理解:

>>> d = { 'a': 1, 'b': 2, 'c': 'c' }
>>> { a: None if a == b else b for a,b in d.items() }
{'a': 1, 'c': None, 'b': 2}

这显然会创建整个字典的副本,因此上述答案可能更适合您的用例。