如何更新 Python 字典中的值?

How to update values in Python's dictionary?

我的字典如下所示,我正在按照此 link 更新“Column_Type”键中的值。基本上,我想将值“String”替换为“VARCHAR(256)”,将 DATE 替换为“NUMBER (4,0)”,将 Int 替换为“NUMBER”,将 Numeric 替换为“Number”。每当我 运行 下面的代码时,我的值都不会更新到我的 dictionary.My 更新字典所需的输出如下

请注意:column_types 的位置也可能有所不同。例如:Column_type[String] 当前在位置 1,但稍后可能在位置 3。

{'Column_name': ['Name', 'Salary', 'Date', 'Phone'], 'Column_Type': ['String', 'Numeric', 'Date', 'Int']}

代码:

for key1, key2 in my_dict.items():
    if key2== 'String':
        my_dict[key2] = "VARCHAR(256)"
print(my_dict)

期望输出:

{'Column_name': ['Name', 'Salary', 'Date', 'Phone'], 'Column_Type': ['VARCHAR(256)', 'NUMBER', 'NUMBER(4,0)', 'NUMBER']}

您可以使用list.update(val1, val2)

示例:

# Dictionary of strings to ints
word_freq = {
    "Hello": 56,
    "at": 23,
    "test": 43,
    "this": 43
}
# Adding a new key value pair
word_freq.update({'before': 23})
print(word_freq)

在您的示例中,您的密钥是 "Column_Name"Column_Type"。在你的字典中有 no 键名为“String”。字典中的两个值都是 list 类型,因此两者都不等于字符串 String

您想要的是替换列表中的特定值。

这样试试:

for index, value in enumerate(my_dict["Column_Type"]):
    if value == "String":
        my_dict["Column_Type"][index] = "VARCHAR(256)"

这替换了list中的值,不是字典。这就是你想要的。

如果您需要替换多个值,您可以使用字典,就像@Jeremy 建议的那样:

type_strs = {
    'String': 'VARCHAR(256)',
    'Numeric': 'NUMBER',
    'Date': 'NUMBER(4,0)',
    'Int': 'NUMBER'
}

for index, value in enumerate(my_dict["Column_Type"]):
    my_dict["Column_Type"][index] = type_strs.get(value, value)

此处,.get() 字典上的函数 returns 对应于第一个参数给出的键的值,如果不存在这样的键,则为第二个参数。

type_strs = {
    'String': 'VARCHAR(256)',
    'Numeric': 'NUMBER',
    'Date': 'NUMBER(4,0)',
    'Int': 'NUMBER'
}
my_dict['Column_Type'] = [type_strs[t] for t in my_dict['Column_Type']]

我建议使用字典而不是 if 语句来翻译类型字符串

你在这一行中比较一个列表和这个列表的一个元素if key2== 'String':

key2当你旅行时变量包含下一个['String', 'Numeric', 'Date', 'Int'],所以你需要加入到数组的这个值进行比较。你可以用 for 循环

下一个节目是:

my_dict={'Column_name': ['Name', 'Salary', 'Date', 'Phone'], 'Column_Type': ['String', 'Numeric', 'Date', 'Int']}

# We create this variable to save the position of the element
position=0

# We travel to the dictionary
for i in my_dict['Column_Type']:

    # If the variable is equal to the string
    if i == 'String':

        # We assign the new information to the variable
        my_dict['Column_Type'][position]="VARCHAR(256)"

    #And add one to the position
    position+=1
    
print(my_dict)

输出

{'Column_name': ['Name', 'Salary', 'Date', 'Phone'], 'Column_Type': ['VARCHAR(256)', 'Numeric', 'Date', 'Int']}