【问题标题】:Comparing 2 dictionaries in python比较python中的2个字典
【发布时间】:2012-07-16 20:42:36
【问题描述】:

我有两个 Python 字典。一个是球队列表和他们在联赛表中的排名,每支球队都是关键,他们的排名是相关的价值。另一个是关于每个团队的数据,团队名称是键的值:

RankDict = {'Tigers':'1','Lions':'2', 'Pumas':'3', 'Wolves':'4'}

TeamDict = {'TeamRecords':[{'Team': 'Lions', 'Location':'Greenville', 
             'HomeGround':'Trec Park', 'Coach': 'K. Wilson'},
            {'Team':'Pumas', 'Location':'Fairlodge', 
             'HomeGround':'Fairlodge Fields', 'Coach':'G. Kennedy'}]}

我想做的是根据RankDict 中与团队相关联的排名从TeamDict 字典中打印详细信息,但不能只进行直接键比较,因为键不常见。谁能帮帮我?

我在文档中找不到有关此类字典比较的任何信息。也许这根本不可能?

【问题讨论】:

  • TeamDict 不是有效的字典。
  • @adohertyd:在您编辑之前,TeamDict 不是有效的字典,而是有效的集合文字。修改后,两者都不是。
  • @adohertyd - 请将您的代码保存到文件中并在 python 解释器中运行。如果解释器不接受它(运行没有错误),那么我们也不能。
  • “我要做的是根据与团队关联的排名从 TeamDict 字典中打印详细信息” 以什么方式基于排名?
  • 为什么要为 TeamDict 使用字典呢?为什么不直接使用与“TeamRecords”关联的值作为列表?

标签: python dictionary


【解决方案1】:

以下将打印团队、排名和团队详细信息(按排名排序):

import operator

RecordsByTeam = {}
for r in TeamDict['TeamRecords']:
    RecordsByTeam[r['Team']] = r

for team, rank in sorted(RankDict.items(), key=operator.itemgetter(1)):
    print team
    print rank
    try:        
        print RecordsByTeam[team]
    except KeyError:
        print 'No details could be found for team', team

请注意,我在打印团队详细信息时使用了try/except,因为TeamDict 不包含有关每个团队的信息。

另外请注意,RankDict 中的排名应该使用整数,否则当有一个团队时,上面的代码将无法正确排序,例如,'11' 作为排名(它将排序:'11', '2'、'3'、'4')。

【讨论】:

  • 非常感谢 Simeon 我想这就是我要找的。我只为示例打印了一小部分实际字典,但无论如何我都会使用 try/except 函数。另外,会考虑关于整数的点谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多