【问题标题】:add a value for a list of specific keys in dictionary [duplicate]为字典中的特定键列表添加值[重复]
【发布时间】:2020-09-07 22:25:50
【问题描述】:

我正在尝试将特定值添加到字典中的特定键,我得到了一个特殊键列表。我正在使用 for 循环来执行此操作,但结果是将所有内容添加到字典中的所有键中

keyList = ['a','b','c']
testdict = dict.fromkeys(keyList,[])
specKey = ['a','c']

for i in specKey:
    t = testdict.get(i)
    t.append(i)
print(testdict)

结果是这样的

{'a': ['a', 'c'], 'b': ['a', 'c'], 'c': ['a', 'c']}

但我希望结果应该是这样的:

{'a': ['a'], 'b': [], 'c': ['c']}

谁能告诉我我做错了什么?谢谢!

【问题讨论】:

  • 为避免此问题,请改用字典理解:testdict = {k:[] for k in keyList}
  • fromkeys 通常只有在您使用 不可变 值来初始化每个键时才有用。
  • 哦,所以我在创建字典时犯了一个错误...谢谢大家!

标签: python


【解决方案1】:

行:

dict.fromkeys(keyList, [])

创建由所有键共享的相同列表。

相反,为每个键显式创建列表:

keyList = ['a','b','c']
testdict = { k : list() for k in keyList}
specKey = ['a','c']

for i in specKey:
    testdict[i].append(i)

# {'a': ['a'], 'b': [], 'c': ['c']}
print(testdict)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2020-04-18
    • 2019-11-13
    • 1970-01-01
    • 2016-07-31
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多