【问题标题】:Changing a list into dictionary in python [duplicate]在python中将列表更改为字典[重复]
【发布时间】:2019-02-01 01:55:30
【问题描述】:

您好,我有一个清单:

lst = ['Bedroom,24', 'Bedroom,26', 'Kitchen,22', 'Kitchen,23', 'Living Room,23', 'Living Room,24', 'Living Room,25']

现在我想不出任何方法可以将其更改为字典:

lst = {'temp':24,.....}

我尝试替换逗号,但由于它是一个列表,因此没有成功。我使用了 for 循环,但似乎没有用,而且我是初学者,我不知道如何将数字更改为整数。下面的示例列出了:

fname = open("temps1.txt")     
lst = []    

for line in fname:
  line = line.rstrip()      
  words = line.splitlines() 

    for word in words:
    if word in lst: continue
    lst = lst + words     
  lst.sort() 
print(lst)

>>>>>>['temp,24', 'bedroom,26', 'class,23'] #output

最后,是否可以将列表转换为字典?
我的输出应该是:

 Average temp:
 bedroom: #value
 living room:#value

等等

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    您应该遍历列表,然后使用逗号将其拆分。 你可以这样做。

    lst = ['temp,24','bedroom,26','class,23']
    
    dict_obj = dict()
    for element in lst:
        dict_obj[element.split(',')[0]] = int(element.split(',')[1])
    
    print(dict_obj)
    

    更新 由于 OP 的要求是找到数据的平均值,因此方法会改变

    lst = ['Bedroom,24', 'Bedroom,26', 'Kitchen,22', 'Kitchen,23', 'Living Room,23', 'Living Room,24', 'Living Room,25']
    
    dict_obj = dict()
    for element in lst:
        if element.split(',')[0] in dict_obj:
            dict_obj[element.split(',')[0]]['temperature_reading'].append(int(element.split(',')[1]))
            dict_obj[element.split(',')[0]]['average_temperature'] = sum(dict_obj[element.split(',')[0]]['temperature_reading']) / len(dict_obj[element.split(',')[0]]['temperature_reading'])
        else:
            dict_obj[element.split(',')[0]] = {'temperature_reading' : [int(element.split(',')[1])],
                                               'average_temperature' : element.split(',')[1]}
    
    print(dict_obj)
    

    输出:

    {
        'Bedroom': {'average_temperature': 25.0, 'temperature_reading': [24, 26]},
        'Kitchen': {'average_temperature': 22.5, 'temperature_reading': [22, 23]},
        'Living Room': {'average_temperature': 24.0,
                     'temperature_reading': [23, 24, 25]}
    }
    

    【讨论】:

    • 如何将其转换为整数?
    • @agro 如果我的列表 = ['Bedroom,24', 'Bedroom,26', 'Kitchen,22', 'Kitchen,23', 'Living Room,23', 'Living Room ,24', '客厅,25']
    • @DevPatel 要将其保存为列表吗?即{'Bedroom':[24,26] , 'Kitchen': [22,23]}
    • @agro 所以基本上,例如我有不同的客厅温度,每天记录 6 小时,我必须计算它们的平均值。
    • @DevPatel 检查我的更新答案
    【解决方案2】:

    最简单的:

    print(dict([(i.split(',')[0],int(i.split(',')[1])) for i in lst]))
    

    输出:

    {'temp': 24, 'bedroom': 26, 'class': 23}
    

    【讨论】:

      猜你喜欢
      • 2020-12-07
      • 1970-01-01
      • 2016-01-10
      • 2017-07-31
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      相关资源
      最近更新 更多