如何制作一个字典来存储我替换的值而不导入defaultdic?

2024-10-01 00:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数,将字典列表中的值替换为整数。我所做的函数用于替换值,但不存储被替换的值

sample=[{1: 'A', 2: 'A', 3: 'C', 4: 'A', 5: 'C'}, {1: 'A', 2: 'G', 3: 'A', 
4: 'C', 5: 'A'}, {1: 'A', 2: 'C', 3: 'T', 4: 'A', 5: 'A'}]
def updatevaluedict(dictionary,va):
'''takes in a dictionary and replaces the values that you
    want with ones'''
emptydict2=[]
for individual_dict in dictionary:
    for key in individual_dict: 
        if individual_dict[key] ==va:
            individual_dict[key]=1###LOOK HERE
        else:
            individual_dict[key]=0
return dictionary

这会打印出我想要的值

print(updatevaluedict(sample,'A')

我正在尝试将所需的值替换为“1”,将其余值替换为“0”。 但是,实际字典中的所有值都已替换为0


Tags: samplekey函数in列表fordictionary字典
3条回答

通过运行代码,我注意到在上一个字典的末尾有一个额外的'{1: 'A', 2: 'C', 3: 'T', 4: 'A', 5: 'A''}

除此之外,您的代码在Python2.7.12中运行良好

这将修改现有的字典,不确定您要实现什么,因此这将用数字1替换所有值

sample=[{1: 'A', 2: 'A', 3: 'C', 4: 'A', 5: 'C'}, {1: 'A', 2: 'G', 3: 'A', 
4: 'C', 5: 'A'}, {1: 'A', 2: 'C', 3: 'T', 4: 'A', 5: 'A'}]
for dct in sample:
    for k in dct:
        dct [k] = 1
print (sample)

打印(一行):

[{1: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 
{1: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 
{1: 1, 2: 1, 3: 1, 4: 1, 5: 1}]

或者,要将其中一个字典传递给函数并对其进行修改,可以使用如下列表索引:

sample[0]

如下所示(您还可以通过更改“number”变量来选择要用哪个整数替换字典值):

def replace(dct,number):
    for k in dct:
        dct [k] = number
    return dct

number = 2
sample[0] = replace(sample[0],number)
print (sample)

打印(一行):

[{1: 2, 2: 2, 3: 2, 4: 2, 5: 2}, 
{1: 'A', 2: 'G', 3: 'A', 4: 'C', 5: 'A'}, 
{1: 'A', 2: 'C', 3: 'T', 4: 'A', 5: 'A'}]
sample=[{1: 'A', 2: 'A', 3: 'C', 4: 'A', 5: 'C'}, {1: 'A', 2: 'G', 3: 'A', 
         4: 'C', 5: 'A'}, {1: 'A', 2: 'C', 3: 'T', 4: 'A', 5: 'A''}]

def updatevaluedict(individual_dict, va):
    '''
    takes in a dictionary and replaces the values that you
    want with ones
    '''
    for key in individual_dict: 
        if individual_dict[key] == va:
            individual_dict[key] = 1###LOOK HERE
        else:
            individual_dict[key] = 0
     return dictionary

def update_list(ll=[]):
    # update list of dictionary
    new_ll = []
    for each_dict in ll:
        new_ll.append(updatevaluedict(each_dict, va))
    return new_ll

相关问题 更多 >