2015-09-28 110 views
-1

我有这个字典:搜索在字典的关键,关键的值assing一个变量的Python

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

我需要改变这样的'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 

问:我如何取对应于当天代表的密钥的值?

如果我不解释这个清除只是让我知道,我会更努力。

在此先感谢您的帮助提供

+0

为什么倒票??有人不喜欢SO中的西班牙文字? – NachoMiguel

+0

如果你问“如果我知道密钥,我该如何得到一个字典的价值?”,请尝试'value = my_dict [key]' – Kevin

+0

你的实际问题似乎是“如何改变一个项目的价值列表“,答案是'fecha_entera [1] ='Enero''。这个'1'不是该项目的值,而是列表中从零开始计数的第二项。 – multivac

回答

0

对于字符串的解决方案,使用字符串“替换”功能的“/ 1 /”。

lista.replace("/" + dia + "/", "/" + dict_months[int(dia)] + "/") 
+0

谢谢你,很干净 – NachoMiguel

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来比较。