lev*_*tov 4 python coding-style dry
我需要wast字典,主要是典型值的映射,以及一些独特的值.获得它的第一种方法是定义一个扁平的"显式"字典文字:
musicians = {
'ABBA': 'pop',
'Avril Lavigne': 'pop',
...
'Mikhail Krug': 'russian chanson',
'The Rolling Stones': 'rock',
...
'Zaz': 'jazz',
}
Run Code Online (Sandbox Code Playgroud)
第二 - "干"一堆典型的名单和特价词典:
pop_musicians = [
'ABBA',
'Avril Lavigne',
...
]
rock_musicians = [...]
unusual_musicians = {
'Mikhail Krug': 'russian chanson',
'Zaz': 'jazz',
}
musicians = dict(
[(m, 'pop') for m in pop_musicians] +
[(m, 'rock') for m in rock_musicians] +
unusual_musicians.items()
)
Run Code Online (Sandbox Code Playgroud)
假设在我的情况下键值关系变化更大(某些键的值可能会改变),而不是在这个例子中.
你更喜欢哪种方式?为什么?在您看来,哪一个更pythonic?
我的答案是分层数据结构:
genres = {
"rock": [
"some rock band",
"some other rock band",
],
"pop": [
"some pop star",
"some pop group",
],
}
Run Code Online (Sandbox Code Playgroud)
如果您必须以第一种格式使用它,字典理解将很好地完成工作:
musicians = {musician: genre for genre, musicians in genres.items() for musician in musicians}
Run Code Online (Sandbox Code Playgroud)
会产生:
{'some other rock band': 'rock', 'some pop group': 'pop', 'some rock band': 'rock', 'some pop star': 'pop'}
Run Code Online (Sandbox Code Playgroud)
或者,如果你发现自己不得不做很多复杂的操作,也许可以让音乐家上课给自己更多的自由.
归档时间: |
|
查看次数: |
161 次 |
最近记录: |