【问题标题】:Iteration Through tuple of dictionaries in Python在 Python 中遍历字典的元组
【发布时间】:2015-07-22 03:08:59
【问题描述】:

我正在尝试使用 Python 遍历字典元组,获取我要查找的值,然后使用该值修改另一个字典。示例:

Dict = {'1': 'one', '2': 'three'}

Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'})

我的目标是修改Dict 并将'three' 替换为我的元组中第二个字典中的'two'

我知道如何使用 for 循环和 dict.items() 遍历字典,但我似乎无法使用 tuple...

任何帮助将不胜感激!

【问题讨论】:

  • 你能显示你的预期输出吗? Dict 是否会拥有来自 Tuple 字典的所有键/值对?
  • 我的 Dict 不一定会包含 Tuple dicts 中的所有键/值,但 Tuple dicts 肯定会包含 Dict 中的所有键/值。希望有意义
  • 如果Tuple包含两个字典,其中一个关键字与Dict中的一个关键字匹配,例如:Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'}, {'2': 'six'}),程序应该怎么做?
  • @MaxSpencer 好问题,但我永远不会这样。 :)

标签: python list loops dictionary tuples


【解决方案1】:

只需检查每个字典 d 的密钥,然后将 Dict["2"] 设置为等于 d["2"]

Dict = {'1': 'one', '2': 'three'}

Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'})

for d in Tuple:
    if "2" in d:
        Dict["2"] = d["2"]

如果您在 Tuple 中有多个具有相同键的字典,则该值将设置为您遇到的最后一个字典。如果你想要第一场比赛,你应该在 if 中break

Dict = {'1': 'one', '2': 'three'}

Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'})
for d in Tuple:
    if "2" in d:
        Dict["2"] = d["2"]
        break # get first match

如果你想要最后一场比赛,最好从元组的末尾开始:

for d in reversed(Tuple):
    if "2" in d:
        Dict["2"] = d["2"]
        break # last dict in Tuple that has the key

【讨论】:

  • 我不需要 d 上的两个 for 循环?
  • OP 似乎不太可能只是想用键 '2' 替换项目,你能澄清这是否是@Frodo 的目标吗?
  • @Frodo,不,if "2" in d 会查看 dict 中是否存在键,无需遍历键,实际上效率较低。
  • @MaxSpencer,这无关紧要,重要的是逻辑。他们还评论说他们知道他们想要寻找的特定密钥。
  • @MaxSpencer,我已经知道每次都需要更换哪些键。我有一个标记来定义它,因为我不想每次都修改它们。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多