Python 如果键和值相同,如何将字典中的值更改为无

Python 如果键和值相同,如何将字典中的值更改为无,python,dictionary,Python,Dictionary,我有一堆创建字典的文件,其中一些文件的键和值是相同的。我需要跟踪相同的词典,以便其他人可以使用正确的值更新它们。我想将这些词典的值设置为“无”。我已经去掉了所有空格和奇怪的字符,所以键和值完全相同。我基本上想说,如果键和值相同,那么设置value=None x = file I'm creating dictionary from if x[1] = x[4]: d[x[1]] = None 但无论何时做类似的事情,我都会收到一条错误消息: SyntaxError: invalid s

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

x = file I'm creating dictionary from
if x[1] = x[4]:
    d[x[1]] = None
但无论何时做类似的事情,我都会收到一条错误消息:

SyntaxError: invalid syntax

有什么建议吗?

在Python和我所知道的所有其他语言中,为了比较if中的值,使用了double equals==。我建议你读一读:。下面是示例代码,用于在键和值相同的情况下将值设置为无:

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}

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

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

您可以使用字典理解:

>>> 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}

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

在比较x[1]和x[2]时,一开始就应该是==当比较x[1]和x[2]时,您显然是在创建dict,因此您需要更改的是Rafael建议的内容,如果x[1]==x[4]:@e9e9s:为此添加了示例代码。你会好起来的idea@pscuderi这很好,因为它迭代的是items元组,而不是dictionary@brianpck,没有区别,没有任何内容被删除。我认为他们还没有dict,他们是从文件内容创建的,所以这可能是一个更好的方法。