使用python为现有密钥添加值

时间:2017-10-18 10:14:50

标签: python

您好我使用Python来使用纬度,经度和时间戳(unix时间)保存位置数据。使用字典

但我尝试使用append函数添加字典,我无法运行它,因为“append”无法与str一起使用

到目前为止,这是我的代码

dic_loc = {'latitude': 'Value for latitude ', 'longitude': 'Value for longitude', 'timestamp': 'Time Stamp'}



def make_timestamped_loc(La, Lng, Time):
    dic_loc['latitude'].append(La)
    dic_loc['longitude'].append(Lng)
    dic_loc['timestamp'].append(Time)

make_timestamped_loc(37.481236, 126.952733, 1483196400)
make_timestamped_loc(37.481126, 126.952733, 1498859012)

print(dic_loc)

如果可以,我想消除现有的str值并为每个键添加新值。非常感谢你

5 个答案:

答案 0 :(得分:2)

附加仅适用于list,因此您无法在dict中使用它,因为它会将string存储在作业中。所以,你可以采取两种方式。使用list存储值,然后使用appendaddstring本身。

使用list

dic_loc = {'latitude': ['Value for latitude '], 'longitude': ['Value for longitude'], 'timestamp': ['Time Stamp']}

def make_timestamped_loc(La, Lng, Time):
    dic_loc['latitude'].append(La)
    dic_loc['longitude'].append(Lng)
    dic_loc['timestamp'].append(Time)

make_timestamped_loc(37.481236, 126.952733, 1483196400)
make_timestamped_loc(37.481126, 126.952733, 1498859012)

print(dic_loc)

'''
{
 'latitude': ['Value for latitude ', 37.481236, 37.481126],
 'longitude': ['Value for longitude', 126.952733, 126.952733], 
 'timestamp': ['Time Stamp', 1483196400, 1498859012]
}
'''

strings

dic_loc = {'latitude': 'Value for latitude ', 'longitude': 'Value for longitude', 'timestamp': 'Time Stamp'}

def make_timestamped_loc(La, Lng, Time):
    dic_loc['latitude']+= ' '+str(La)
    dic_loc['longitude']+=' '+str(Lng)
    dic_loc['timestamp']+=' '+str(Time)

make_timestamped_loc(37.481236, 126.952733, 1483196400)
make_timestamped_loc(37.481126, 126.952733, 1498859012)

print(dic_loc)

'''
{
 'latitude': 'Value for latitude  37.481236 37.481126', 
 'longitude': 'Value for longitude 126.952733 126.952733', 
 'timestamp': 'Time Stamp 1483196400 1498859012'}
'''

如果您正在寻找:

  

如果可以,我想消除现有的str值并添加   每个键的新值。

您可以直接指定值:

def make_timestamped_loc(La, Lng, Time):
    dic_loc['latitude'] = La
    dic_loc['longitude'] = Lng
    dic_loc['timestamp'] = Time

答案 1 :(得分:1)

在您的情况下,您应该指定,但追加

...
dic_loc['latitude'] = La

答案 2 :(得分:1)

首先将密钥留空,然后追加:

dic_loc = {'latitude': [], 'longitude': [], 'timestamp': []}

def make_timestamped_loc(La, Lng, Time):
    dic_loc['latitude'].append(La)
    dic_loc['longitude'].append(Lng)
    dic_loc['timestamp'].append(Time)

答案 3 :(得分:0)

尝试:

dic_loc = {'latitude': 'Value for latitude ', 'longitude': 'Value for longitude', 'timestamp': 'Time Stamp'}


def make_timestamped_loc(lat, lng, timestamp):
    for key in ['latitude', 'longitude', 'timestamp']:
        if not isinstance(dic_loc[key], list):
            dic_loc[key] = [dic_loc[key]]

    dic_loc['latitude'].append(lat)
    dic_loc['longitude'].append(lng)
    dic_loc['timestamp'].append(timestamp)

make_timestamped_loc(37.481236, 126.952733, 1483196400)
make_timestamped_loc(37.481126, 126.952733, 1498859012)

print(dic_loc)

答案 4 :(得分:0)

如果你想用最新的替换实际时间戳,我会这样做:

def make_timestamped_loc(La, Lng, Time):

    return {'latitude': 'Value for latitude ' + str(La), 'longitude': 'Value for longitude' + str(Lng), 'timestamp': 'Time Stamp ' + str(Time)}

正如其他评论所述,.append(obj)仅适用于列表对象。