我的字典如下所示,我正在按照这个链接更新"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)