【问题标题】:How to stop the values from overwriting themselves in a dictionary: Python如何阻止值在字典中覆盖自身:Python
【发布时间】:2020-06-09 04:25:18
【问题描述】:

很难描述我的问题,所以让我列出场景和我有什么:

listofkeys=[]
listofvalues=[]
for it in practice_list:
    it1= it[0:5]
    it2= it[8:19]
    listofkeys.append(it1)
    listofvalues.append(it2)
di = dict(zip(listofkeys, listofvalues))

出于安全原因,这会打印一些我无法显示的内容,但是对于 practice_list 中的原始字符串,有些名称会重复并且具有不同的值,例如:['apple is green','apple is red','banana是黄色的'...]。当我通过索引将这个列表与 listofnames 和 listofcolors 分开然后压缩到字典中时,它基本上输出:{'apple':'red','banana':yellow'...}。 for 循环似乎正在覆盖另一个值,对吧?我怎样才能阻止这种情况并让字典打印 {'apple': 'green', 'red', 'banana':yellow'...}

【问题讨论】:

  • 每个键只能有一个值,如果你想要多个项目,当然可以是一个列表。
  • 这能回答你的问题吗? Appending values of dict list
  • dict 对象是映射,它们将 single 可散列对象映射到 single 其他对象。当然,该值可以是某种形式的容器,例如列表。

标签: python dictionary


【解决方案1】:

for 循环似乎正在覆盖另一个值,对吧?

没有;循环相应地将每个键值对存储到listofkeyslistofvalues 中,没有问题。

但是,dict 的每个键只能有一个值,并且它的键必须是唯一的。当dict 构造函数遍历zipped 列表时,它会按顺序一次分配一个键。如果一个键出现多次,则每次遇到它的值都会被替换。

确保 first 值用于给定键的最简单方法就是以相反的顺序遍历列表(例如,通过提供 reversed() 版本的列表到zip)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 2012-08-10
    • 2021-01-14
    • 2011-06-18
    • 2019-02-13
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多