如何更新 Python 字典中的值?



我的字典如下所示,我正在按照这个链接更新"Column_Type"中的值关键。基本上,我想替换值"字符串"带有"VARCHAR(256)"日期带有"NUMBER (4,0)" Int带有"NUMBER"和数字"数字"。每当我运行下面的代码时,我的值不会被更新到我的字典中。我希望更新后的字典输出如下

请注意:column_type的位置也可能不同。例如: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']}

在您的示例中,密钥是"Column_Name"Column_Type"没有键名为"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)

这里,dict上的.get()函数返回第一个参数给出的键对应的值,如果不存在键,则返回第二个参数对应的值。

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

您可以使用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)

相关内容

  • 没有找到相关文章

最新更新