【问题标题】:Adding Multiple Values to Single Key in Python Dictionary ComprehensionPython字典理解中为单个键添加多个值
【发布时间】:2014-03-14 15:57:46
【问题描述】:

我正在使用从 Excel 电子表格创建的字典压缩。 Excel 表的第一列是键,接下来的 3 列是值。我想构建一个字典理解,以后可以在我的脚本中使用。我理解字典理解被构建为:

d = {key: value for (key, value) in sequence}

我可以这样做并获得一个不错的键值字典:

d = {str(row.getValue("Column1")): str(row.getValue("Column2")) for i in arcpy.SearchCursor(xls,"[Column1] = 'Lake_Huron'")}

我只是不确定如何将字典理解中的其他 2 列作为键的第二和第三值添加?这可能吗?

【问题讨论】:

  • 您是指key 还是value
  • 我想为每个键添加多个值。所以column1:column2,column3,column4

标签: python dictionary-comprehension


【解决方案1】:
d = {str(row.getValue("Column1")): (str(row.getValue("Column2")), str(row.getValue("Column3")), str(row.getValue("Column4"))) for i in arcpy.SearchCursor(xls,"[Column1] = 'Lake_Huron'")}

d = {str(row.getValue("Column1")): (str(row.getValue("Column{0}".format(i)) for i in [2, 3, 4]) for i in arcpy.SearchCursor(xls,"[Column1] = 'Lake_Huron'")}

【讨论】:

  • 实际上,我喜欢第二种方法,但是我为值返回了一个生成器对象。我不确定如何打开它以使其可读。如果我这样做了,我将有机会过滤掉 = None 的值,这是我的下一步。
  • 您可以使用生成器对象代替可迭代对象。
  • 呃,这就是我糟糕的地方。我对揭示生成器对象的内容知之甚少。我尝试使用 d.values,但它会返回生成器对象 experession,我实际上想要这些值。我该怎么做?
  • 你可以做for i in generator_object
  • 我想我很困惑。在您提供的第一个示例中,我得到了一个很好的值列表 {'Lake_Huron': ('Lake_NUMBER_ID', 'Size', 'None')} 在第二个示例中我得到 {'Lake_Huron': at 0x14B15418>} 如何将生成器对象语法转换回列表列表,使其看起来像第一个字典?
猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多