在dict中搜索一个键,并将该键的值赋给变量Python

时间:2015-09-28 16:11:13

标签: python dictionary

我有这个词:

dict_meses = {1: 'Enero', 2: 'Febrero', 3: 'Marzo', 4: 'Abril', 5: 'Mayo', 6: 'Junio', 7: 'Julio', 8: 'Agosto',
              9: 'Setiembre', 10: 'Octubre', 11: 'Noviembre', 12: 'Diciembre'}

我需要在dict中对应的月份更改类似于'14 / 1/2015'的字符串的月份。例如,如果有'14 / 1/2015'我需要将其更改为'1 / Enero / 2015'

我正在尝试做这样的事情:

def xxx(days):   -----> days is a list of tuples like this [('14/1/2015', 500), ...]

    dict_months = {1: 'Enero', 2: 'Febrero', 3: 'Marzo', 4: 'Abril', 5: 'Mayo', 6: 'Junio', 7: 'Julio', 8: 'Agosto',
              9: 'Setiembre', 10: 'Octubre', 11: 'Noviembre', 12: 'Diciembre'}
    days_list = []
    for i in days:
        lista = list(i)
        fecha_entera = lista[0].split('/') ---> ['14','1','2015']
        dia = fecha_entera[1] ----------------> '1'
        if int(dia) in dict_meses.keys():
            fecha_entera[1] = ????------------> want to change '1' to 'Enero'
            dias_lista.append(fecha_entera)
    return dias_lista

问题:如何获取与当天代表的密钥相对应的值?

如果我不解释清楚,请告诉我,我会更加努力。

提前感谢您提供的帮助

2 个答案:

答案 0 :(得分:0)

对于字符串解决方案,请在“/ 1 /".

上使用字符串”replace“
lista.replace("/" + dia + "/", "/" + dict_months[int(dia)] + "/")

答案 1 :(得分:0)

您可以使用日期时间使用%B和srftime来解析日期,以获得所需的输出:

from datetime import datetime
dte = '14/1/2015'
print(datetime.strptime(dte,"%d/%m/%Y").strftime("%d/%B/%Y"))

%B会为您提供语言区域的完整月份名称。

In [1]: from datetime import datetime   
In [2]: dte = '14/1/2015'    
In [3]: import locale    
In [4]: locale.setlocale(locale.LC_ALL,"es_SV.utf_8")
Out[4]: 'es_SV.utf_8'    
In [5]: print(datetime.strptime(dte,"%d/%m/%Y").strftime("%d/%B/%Y"))
14/enero/2015

如果每个第一个元素都是日期字符串:

def xxx(days):
    return [datetime.strptime(dte, "%d/%m/%Y").strftime("%d/%B/%Y")
            for dte, _ in days]

如果你想使用你的词典:

def xxx(days):
    dict_months = {"1": 'Enero', "2": 'Febrero', "3": 'Marzo', "4": 'Abril', "5": 'Mayo', "6": 'Junio', "7": 'Julio',
                   "8": 'Agosto',
                   "9": 'Setiembre', "10": 'Octubre', "11": 'Noviembre', "12": 'Diciembre'}
    days_list = []
    for sub in map(list, days):
        dy, mn, year = sub[0].split()
        days_list.append("{}/{}/{}".format(dy, dict_months[mn], year))
    return days_list

您应该将键用作字符串,无需转换为int进行比较。