![]() |
1
hutoer 130 天前 ![]() |
![]() |
2
ADMlN 130 天前 ![]() 比如:
A={i:'' for i in range(1,41)} B=['zhangsan','lisi','wanger','mazi'] A.update({2**(i+2):b for i,b in enumerate(B)}) |
![]() |
3
hackpro 130 天前 via iPhone
挺有意思的问题
|
4
AX5N 129 天前
如果用你熟悉的语言,你会怎么优雅地实现?
|
5
soo2 129 天前 via iPhone ![]() (看到 Wanger 笑了。)
|
6
rpman 129 天前
港真循环挺好的
嫌弃的话可以用 map |
![]() |
7
seers 129 天前 via Android
迭代器
|
![]() |
8
raptor 129 天前 ![]() 不怕麻烦的话,pandas 了解一下?
A 和 B 转为 pandas.DataFrame B['id'] = [2 ** (id + 1) for id in A['id']] A.set_index(["id"], inplace=True) A.update(B.set_index(['id'])) A.reset_index(inplace=True) |
![]() |
9
imn1 129 天前
我简单理解你的描述,A 的 id/name 两列都可以重复的(不重复也没必要循环了),B 是各自独立不重复的
其实这个取决于 A 的格式 二维 list --> 循环 /map/lambda ,list 也没办法优雅,即使用 map 也是要执行写入时循环一遍 pandas --> mask() sql --> sql 命令 B 可以用 1.enum ,如果 B 为整数递增就 IntEnum ,如果 B 为二进制整数递增就 IntFlag 2.以数值做 key 的字典 3.pandas.Series 或 numpy 4.以位置作为索引的列表,无值的位置填入 None 当然 1 是最简单,因为 enum 可以用 key 读取 value ,也可以用 value 读取 key ,字典只能从 key 读取 value ,所以只能用数值作为 key 如果 A 是 sql ,B 可以继承 enum 并自定义一个__conform__(self, protocol)方法,方便读取|写入数据库 |
![]() |
10
Telegram 129 天前
临时用一次的就别考虑优雅了,能实现就行,浪费时间。
如果以后经常要用到,那倒是可以花点时间优化下方案。 |
11
liuxingdeyu 129 天前
优雅除了更高逼格的写法,还要尽量不牺牲代码的可阅读性
|