【问题标题】:Python split dictionary key at commaPython在逗号处拆分字典键
【发布时间】:2016-09-13 18:02:05
【问题描述】:

我有一本名为 muncounty 的字典——键是市、县。以逗号分隔,值为邮政编码

 muncounty['mun'+','+'county'] = 12345

我的目标是在分隔 mun 和 County 的逗号处拆分键,并且只提取 mun。

我试过了

muncounty.keys().split(',')
  • 我知道这不起作用,因为您不能在列表上使用拆分功能

【问题讨论】:

  • 我忘了引号 - 仍然不起作用
  • 看起来你必须拆分列表的元素。使用迭代。
  • 一个问题这里错得太多了。您错误地调用了 split 并且在错误的对象上,您试图对列表的每个成员执行某些操作而不循环。从根本上说,你只是在糟糕地形成 dict。与其使用这种复杂的复合字符串键,为什么不使用像muncounty[municipality_name][county_name] = zip_code 这样的嵌套字典?
  • 所以循环进入键名?
  • 明白了,我试试看。对不起,我对 python 很陌生

标签: python dictionary


【解决方案1】:

好吧,详细模式:

muncounty = {}
muncounty['mun'+','+'county'] = 12345
muncounty['mun2'+','+'county2'] = 54321

l = []
for i in muncounty:
    l.append(i)

muns = []

for k in l:
    muns.append(k.split(',')[0])

但是伙计...这是存储 mun/countries 的一种非常糟糕的方式 ;-)

【讨论】:

  • 在阅读了人们对我的问题的回答后,我意识到这是一种糟糕的方式,但为什么? ps 我刚接触 python 几个月
  • 因为您需要在每次迭代时循环所有 dict 和拆分字符串。这是不可升级的。你真正想做的是什么? :-)
  • 我正在更新 1.csv 地址层,其中包含市政当局且没有邮政编码。来自 2. csv,只有县、市和邮政编码。所以我循环通过 2. csv 提取该信息,然后循环通过 1. 地址 csv 并匹配市政当局并将拉链添加到它
  • 没关系。但是在这一步之后,您应该以其他格式存储它以使用它。更简单的方法可以是 my_dict['BR','Fortaleza'] = 63040-360。
  • 但我的偏好是创建对象来存储国家/地区,其中包含一组对象,例如城市/社区/邮政编码。
【解决方案2】:

[x.split(',')[0] for x in muncounty.keys()]

但我建议将您的密钥存储为元组(市、县)。

【讨论】:

    【解决方案3】:

    您可以使用 map 和 lambda 函数。

    di = {'a.b':1}
    map(lambda k: k.split('.'), di.keys())
    

    【讨论】:

      【解决方案4】:

      您需要某种循环,例如列表理解:

      [key.split(',') for key in muncounty.keys()]
      

      【讨论】:

        【解决方案5】:

        你的问题和示例代码不是很清楚,但我认为你想要的是:

        for key in muncounty.keys():
            mun, county = key.split(',')
        

        您当前的代码正试图在list 上执行split,您非常正确地指出这是无法完成的。上面的代码所做的是遍历每个键,并分别对其执行split

        【讨论】:

          猜你喜欢
          • 2014-10-26
          • 1970-01-01
          • 1970-01-01
          • 2014-01-03
          • 1970-01-01
          • 2013-03-01
          • 2015-03-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多