媛姐是个憨憨吖 2022-04-07 13:28 采纳率: 0%
浏览 37

列表转换为字典所碰到的问题



```python
l = [['a','b','c','d'],[1,2,3,4],[2,3,4,5],[3,4,5,6]]
dic = dict.fromkeys(l[0],[])
dic['a'].append(l[1][0])
print(dic)

这段代码中,我希望能够得到

```python

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

而我的结果却得到

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

有人能解释一下为什么,并且我应该如何修改我的代码?
感谢大家

  • 写回答

3条回答 默认 最新

  • chuifengde 2022-04-07 14:27
    关注

    因为你的dict.fromkeys(l[0],[])中的[]是先在内存中创建一个空列表对象,然后dict.fromkeys()会将l[0]中的四个元素作为四个键,然后键---值对中的值都绑定到这个空列表对象上,当你用dict['a']访问到[]的时候,只要是对空[]的改变,其它键对应的值就跟着变。
    可以改键的值,但不能直接修改列表,如:
    dic['a'] = [l[1][0]]
    看图

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 4月7日

悬赏问题

  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥15 Android Navigation: 某XDirections类不能自动生成
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费