【问题标题】:Dictionary of dictionaries as values and index as keys字典作为值和索引作为键
【发布时间】:2022-01-04 02:11:17
【问题描述】:

我需要从字典中创建一个字典(让我们将其命名为通用)。 General 是一个字典,以其他字典为值,以索引(按添加顺序)为键。

一般示例:

{
1: {'DATE: ': '2021.12.03', 'TIME: ': '01:50:08', 'LAT: ': '41.1905'}, #was added first 
2: {'DATE: ': '2021.12.03', 'TIME: ': '01:50:08', 'LAT: ': '41.1905'}, #was added next (second) 
3: {'DATE: ': '2021.12.03', 'TIME: ': '01:50:08', 'LAT: ': '41.1905'}, #was added third and so on 
}

示例字典:

{'DATE: ': '2021.12.03', 'TIME: ': '01:50:08', 'LAT: ': '41.1905'}

我有一个生成上述字典的 for 循环,我只需要一种方法将它们附加到一个通用键,该键将是附加字典的顺序。

抱歉,如果不清楚,我已经尽力了。

【问题讨论】:

  • 您是否尝试编写循环来执行此操作?字典保持插入顺序,但由于字典不是有序的数据结构,因此顺序并不重要或没有多大意义。
  • @PranavHosangadi 我不知道如何实现计数器,以便每次下一个添加都获得下一个键
  • 您所描述的内容听起来完全正确就像一个列表。只需在循环中执行 general = []general.append(sample_dict) 即可。索引从 0 开始,每次append 时自动递增。
  • 除了@Samwise 所说的......如果你仍然需要一个字典,你可以拿那个列表然后做:dict(enumerate(general, 1))

标签: python dictionary for-loop append


【解决方案1】:

如果您想保留插入顺序,您应该使用列表而不是字典。字典从 Python 3.6 开始保留插入顺序。但是,这一事实对大多数人来说并不是很明显,这会使您的代码更难理解,而且如果您运行的 Python 版本早于 3.6,则不能依赖这种行为。

所以,你有两个选择:

  1. 使用列表并在您想添加时致电.append()
  2. 如果您出于某种原因必须使用字典,general[len(general) + 1] = # dictionary to append 之类的内容将生成您要查找的密钥。但同样,出于上述原因,我会认真建议不要这样做。

【讨论】:

    【解决方案2】:

    此示例假设您要手动输入数据:

    general = {}
    def add_to_dict():
        n = 0
        while True:
            n+=1
            date = input("Enter date: "),
            time = input("Enter time: "),
            lat = input("Enter latitude: ")
            
            general[f'{n}'] = {'DATE':date,'TIME':time,'LAT':lat}
    
            another = input("Enter another? Y/N: ").capitalize().strip()
            if another == 'Y':
                another = True
                continue
            else:
                print(general)
                break
    add_to_dict()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      相关资源
      最近更新 更多